Django ManyToManyField Уникальный предмет - PullRequest
0 голосов
/ 09 октября 2019

Я пишу модель ниже:

class Person(models.Model):
    name = models.CharField(max_lenght=50)

class Group(models.Model):
    admins = models.ManyToManyField(
        Person,
        related_name='group_admins'
    )
    members = models.ManyToManyField(
        Person,
        blank=True,
        related_name='group_members'
    )

Я хочу, чтобы человек не мог присоединиться к другой группе, если он принадлежит к группе.

Я имею в виду, члены группы илиадминистратор группы не может присоединиться к новой группе, если он / она принадлежит к группе.

Может ли кто-нибудь помочь мне в этом?

1 Ответ

0 голосов
/ 09 октября 2019

Если человек может быть только в одной группе, то вы смотрите не на отношение многие-ко-многим, а на отношение многие-к-одному, которое в Django представлено models.ForeignKey [0]

В вашем случае это может выглядеть примерно так:

class Person(models.Model):
    name = models.CharField(max_length=50)
    member_of = models.ForeignKey('Group', related_name='group_members')
    admin_of = models.ForeignKey('Group', related_name='group_admins', null=True, blank=True)

class Group(models.Model):
    # name = models.CharField() etc

Обратите внимание на использование related_name, это позволит вам, начиная с Group, опрашивать всех участников и администраторов.

[0] https://docs.djangoproject.com/en/2.2/topics/db/examples/many_to_one/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...