具有不同类型的 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]]'
,尽管它确实会引发有关数据模型设计的问题。
我需要使用成对列表配置 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]]'
,尽管它确实会引发有关数据模型设计的问题。