Django ArrayField具有不同的类型

时间:2017-02-03 10:01:36

标签: python django django-models django-postgresql

我需要配置一个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
               )

2 个答案:

答案 0 :(得分:2)

  

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

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

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

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

答案 1 :(得分:0)

如果您确实需要此功能,则可以尝试JSONField

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

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