Множество полей ссылаются на себя

#python #python-3.x #django #django-models

#python #python-3.x #django #django-модели

Вопрос:

Как сделать мою модель так, чтобы ее множество ссылалось на пользователя

 class User(AbstractUser):
    teacher_or_student = models.CharField(max_length=100)
    mobile_number = models.CharField(max_length=100)
    grade = models.CharField(max_length=100)
    laptop_yes_or = models.CharField(max_length=100)
    students = models.ManyToManyField(User)
  

Ответ №1:

Вы можете передать 'self' строку для этого. По умолчанию a ManyToManyField , которое ссылается на себя, также является симметричным, поэтому вы, вероятно, захотите отключить это, поскольку, если a является учеником b, то b сам по себе не является учеником a. Вы можете сделать это, указав symmetrical=False [Django-doc]:

 class User(AbstractUser):
    teacher_or_student = models.CharField(max_length=100)
    mobile_number = models.CharField(max_length=100)
    grade = models.CharField(max_length=100)
    laptop_yes_or = models.CharField(max_length=100)
    students = models.ManyToManyField(
        'self',
        symmetrical=False,
        related_name='teachers'
    )