두 명의 교사와 학생 모델이 있습니다. 나는 또한 두 가지 모델을 더 가지고 있는데, 여기서 수업은 실제 주제이고 수업은 학생들을 나누는 데 익숙하다. 나는 다음과 같은 관계를 만들고 싶습니다. ManyToManyField 통과 및 DatabaseIntegrity 보장
A student attends a class with a specific lesson e.g George is taking Python in C3
A teacher teaches a specific lesson in a specific class e.g Mike teaches python in C3
및
정도로 eventualyGeorge is Mike's student in python in C3
난 중간 모델을 사용하는 두 모델에서 manytomany 필드를 사용했다.
class Teacher(models.Model):
teaches = models.ManyToManyField(Class, through=TeacherTeaches)
class TeacherTeaches(models.Model):
teacher = models.ForeignKey(Teacher)
class = models.ForeignKey(Class)
lesson = models.ForeignKey(Lesson)
및 위해 : 교사는 그가 많은 교훈을 가르 칠 수있는 많은 클래스를 가질 수 있고 클래스가 많은 교사 (학생 같은) 다른 교훈을 가르치는
이있을 수 있기 때문에 많은에 많은 그래서 나는 다음과 같은했다 학생 :
class Student(models.Model):
attends = models.ManyToManyField(Class, through=StudentAttends)
class StudentAttends(models.Model):
student = models.ForeignKey(Student)
class = models.ForeignKey(Class)
lesson = models.ForeignKey(Lesson)
하지만 (같은 교훈이 있기 때문에 외래 키의 올바른 두 개의 서로 다른 교사에 의해 같은 클래스에서 강의되지 않았는지 확인하는 것입니다 그것은이 구현 할 수없는 생각하는지? 나는 생각한다). 위의 동작을 달성하기 위해 내 모델을 "설정"하는 더 좋은 방법이 있습니까? 두 개의 중간 모델을 통합해야합니까?