具有不同类型的 Django ArrayField

msa*_*aio 5 python django django-models django-postgresql

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

data = [[1.23, 3], [2.42, 1], [3.72, 29]]
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做呢?是否可以?我尝试过类似的方法,但没有成功:

class MyModel(models.Model):
    my_field = ArrayField(
                   models.FloatField(default=0),                        
                   models.PositiveSmallIntegerField(default=0),
                   null=True
               )
Run Code Online (Sandbox Code Playgroud)

Say*_*yse 4

我只是想知道是否可以在 ArrayField 中使用不同的字段类型。

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

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

my_field = ArrayField(
    ArrayField(
        models.FloatField(default=0),
        size=2,
    )
)
Run Code Online (Sandbox Code Playgroud)