就我而言,我需要在期望的字段数组中设计模型。
{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 )
所以我期望将所有字段都放入数组中,而不是定义新模型
答案 0 :(得分:1)
如果将SQLite用作数据库,ManyToManyField
别无选择。
但是,如果您使用PostgreSQL(或切换到PostgreSQL)作为数据库,则可以使用ArrayField
。
您可以像这样使用它:
field_1 = ArrayField(
models.CharField(max_length=50, blank=True)
)
P.S。我假设您实际上不会命名字段field 1
等,但是如果这样做,请不要使用空格,而应使用下划线,而field_1
等。
关于如何使用Postgres代替SQLite有很多信息,例如this link将是一个很好的开始。
但是,在大多数情况下,我仍然建议使用ManyToManyField,因为它使您可以轻松查询两个对象之间的共享关系,并防止重复数据。