可以使用Django MySQL模型数组字段

时间:2019-10-24 07:08:25

标签: mysql django django-models django-rest-framework django-admin

就我而言,我需要在期望的字段数组中设计模型。

{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 个答案:

答案 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,因为它使您可以轻松查询两个对象之间的共享关系,并防止重复数据。