Можно использовать поле массива модели django mysql - PullRequest
0 голосов
/ 24 октября 2019

В моем случае мне нужно спроектировать мою модель в массиве ожидаемых полей.

{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 Ответ

1 голос
/ 24 октября 2019

Если вы используете SQLite в качестве базы данных, альтернативы для ManyToManyField.

нет. Однако, если вы используете (или переключаетесь на) PostgreSQL в качестве базы данных, вы сможетеиспользовать ArrayField.

Вы можете использовать это так:

field_1 = ArrayField(
            models.CharField(max_length=50, blank=True)
          )

PS Я предполагаю, что вы не собираетесь называть свои поля field 1и т. д., но если вы это сделаете, не используйте пробелы, вместо этого используйте подчеркивание, поэтому field_1 и т. д.

Существует много информации о том, как использовать Postgres вместо SQLite, например эта ссылка будет хорошим началом.

Однако в большинстве случаев я все же рекомендую использовать ManyToManyField, поскольку он позволит вам легко запрашивать общие отношения между двумя объектами и предотвращать дублирование данных. а также.

...