Как сопоставить однопользовательскую модель с несколькими ролями (ученик и учитель) с другой моделью, когда отношения с моделью варьируются в зависимости от роли пользователя? - PullRequest
0 голосов
/ 23 января 2019

Итак, у меня есть модель User в Джанго, которая может иметь три роли - учитель, студент или обе.

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

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

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Попробуйте это:

class Person(models.Model):           
   name = models.CharField(max_length=255)
   class Meta:
       abstract = True

class Teacher(Person):
   salary = models.PositiveIntegerField()

class Student(Person):
   roll_no = models.PositiveIntegerField()

class Course(models.Model):
   std = models.ForeignKey(Student)
   mentor = models.OneToOneField(Teacher)
0 голосов
/ 23 января 2019

С учетом псевдокода:

class Course(models.Model):
    name = models.CharField()
    teacher = models.ForeignKey(User, related_name='teaching')
    students = models.ManyToManyField(User, related_name='studying')

Если у вас есть экземпляр User, вы можете проверить все курсы, которые он имеет в качестве студента, позвонив по номеру some_user.studying.all(). Если вы хотите, чтобы все прочитанные лекции принадлежали одному и тому же пользователю, просто позвоните some_user.teaching.all().

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