Как реализовать отношение «многие ко многим» в django, когда отношение содержит атрибуты? - PullRequest
1 голос
/ 02 мая 2020

Я новичок в django, и я знал, что вы можете использовать ManyToManyField, чтобы связать две модели, такие как пользовательские группы, публикуемые автором. поэтому у меня есть это отношение в моем UML UML Example

Как я могу реализовать это в моем коде? Мой снимок был такой

class User(models.Model):
# user fields

class Group(models.Model):
     # group fields

class GroupMember(models.Model):
    group = models.ForeignKey(Group, on_delete=models.DO_NOTHING, db_index=True)
    user = models.ForeignKey(User, on_delete=models.DO_NOTHING, db_index=True)
    IsAdmin = models.BooleanField(default=False, verbose_name='Est un admin')

    class Meta:
        unique_together = (("group", "user"),)

Я хочу использовать ManyToManyFields, чтобы я мог ссылаться между ними (если у меня нет поля IsAdmin, мне не нужно создавать третий класс 'GroupMember')

1 Ответ

2 голосов
/ 02 мая 2020

Вы можете найти пример из официального do c: https://docs.djangoproject.com/en/3.0/topics/db/models/#extra -поля-на-многих-многих-отношений

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

Класс группы в вашей модели должен выглядеть следующим образом:

class Group(models.Model):
    # group fields
    # ...
    users = models.ManyToManyField(User, through='GroupMember')
...