当基于用户角色的模型与模型之间的关系发生变化时,如何将具有多个角色(学生和教师)的单个用户模型映射到另一个模型?

时间:2019-01-23 11:02:36

标签: django django-models user-roles

因此,我在Django中有一个User模型,可以扮演三个角色-老师,学生或两者兼而有之。

我有另一个模型,例如Course,它只能只有一位老师,但是可以将多个学生映射到该模型。

如何将这些模型与另一个模型联系起来?

2 个答案:

答案 0 :(得分:0)

给出伪代码:

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()

答案 1 :(得分:0)

尝试一下:

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)