可以使用 django mysql 模型数组字段
Posted
技术标签:
【中文标题】可以使用 django mysql 模型数组字段【英文标题】:It's possible to use django mysql model array field 【发布时间】:2020-02-20 11:23:54 【问题描述】:在我的情况下,我需要在预期的字段数组中设计我的模型。
field 1: string, field 2: [""], field 3: [""]
到目前为止,我设计的模型如下:
class Collaborator(models.Model):
name = models.CharField(max_length=50, blank=True, null = True, )
class Responsibility(models.Model):
name = models.CharField(max_length=50, blank=True, null = True, )
class Class1(models.Model):
field 1 = models.CharField(max_length=50, blank=True, null = True, )
field 2 = models.ManyToManyField(Responsibility, related_name='res_cards', blank=True,null=True )
field 3 = models.ManyToManyField(Collaborator, related_name='col_cards', blank=True, null=True )
所以我期望获取数组中的所有字段而不是定义新模型
【问题讨论】:
请不要在变量名中使用空格。 【参考方案1】:如果您使用 SQLite 作为数据库,则ManyToManyField
没有其他选择。
但是,如果您使用(或切换到)PostgreSQL 作为数据库,则可以使用ArrayField
。
你可以这样使用它:
field_1 = ArrayField(
models.CharField(max_length=50, blank=True)
)
附:我假设你不会真的将你的字段命名为 field 1
等,但如果你这样做,不要使用空格,而是使用下划线,所以 field_1
等。
有很多关于如何使用 Postgres 代替 SQLite 的信息,例如 this link 将是一个好的开始。
但是,在大多数情况下,我仍然建议使用 ManyToManyField,因为它可以让您轻松查询两个对象之间的共享关系,并防止重复数据。
【讨论】:
我使用 mysql 作为我的数据库 这种情况下可以使用django-my-sql, which supports a ListField 我已经尝试过在我的管理用户界面中没有看到任何变化,它显示为文本字段 当我查看文档时,您似乎需要在该文本字段中输入您的值,用逗号分隔:name1,name2,name3
以上是关于可以使用 django mysql 模型数组字段的主要内容,如果未能解决你的问题,请参考以下文章