具有不同类型的 Django ArrayField

Django ArrayField with different types

我需要使用成对列表配置 django.contrib.postgres.fields.ArrayField,其中第一个元素是浮点数,第二个元素是一个小的正整数:

data = [[1.23, 3], [2.42, 1], [3.72, 29]]

我该怎么做?可能吗?我尝试过类似的方法,但没有成功:

class MyModel(models.Model):
    my_field = ArrayField(
                   models.FloatField(default=0),                        
                   models.PositiveSmallIntegerField(default=0),
                   null=True
               )

I just want to know if I can use different field types inside an ArrayField.

不,这是不可能的,这将涉及一种非常混乱的从数据库中获取数据的方法,并且无法真正将数据库中的字段类型设置为具体类型。

相反,只需使用两个浮点字段

my_field = ArrayField(
    ArrayField(
        models.FloatField(default=0),
        size=2,
    )
)

如果你真的需要这个功能,你可以试试JSONField:

class MyModel(models.Model):
    my_field = JSONField()

并在其中存储 '[[1.23, 3], [2.42, 1], [3.72, 29]]',尽管它确实会引发有关数据模型设计的问题。