不同类型的Django ArrayField

jjjwad0x  于 2023-04-13  发布在  Go
关注(0)|答案(3)|浏览(103)

我需要配置一个django.contrib.postgres.fields.ArrayField,其中第一个元素是float,第二个元素是一个小的正整数:

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
               )
g2ieeal7

g2ieeal71#

我只是想知道我是否可以在ArrayField中使用不同的字段类型。
不,这是不可能的,它将涉及一种非常混乱的方法来从数据库中获取数据,以及没有办法真正将数据库中的字段类型设置为具体类型。
相反,只需使用两个浮点字段

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

hpxqektj2#

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

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

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

djmepvbi

djmepvbi3#

你可以试试这个:

from django.contrib.postgres.fields import ArrayField
from django.db import models

class Author(models.Model):
   name = models.CharField(max_length=1024)
   books_list = ArrayField(
       models.CharField(max_length=1024)
   )

相关问题