mysql - 可以使用 django mysql 模型数组字段

标签 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 )

所以我希望获取数组中的所有字段,而不是定义新模型

最佳答案

如果您使用 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 mysql 模型数组字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58535966/

相关文章:

python - 如何创建具有 M2M 和 FK 关系的 Django 模型的精确副本

django - 在模型中包含一个 Admin 类?

django - ModelForm 实例与初始

python - Django 模板不加载任何内容(黑屏)

MySQL子查询返回多行,我想将一个值与所有行进行比较

mysql - 插入sql中的双重选择

php - $_POST 在它看到的第一个空格处停止

python - Django 模板不存在@

django - 如何仅更改当前用户模型中字段的值?

php - Zend mysql fetchAll 和计数