Модельное ограничение на проверку существующей связи между двумя полями
Я пишу приложение Django и хочу, чтобы Пользователи могли просматривать Курсы.
Пользователи должны выбрать Профессора, которого они рецензируют, при создании Рецензии, потому что несколько профессоров могут преподавать этот единственный курс.
Я создал таблицу Taught, которая хранит отношения между Professors и Courses.
Как сделать так, чтобы при добавлении рецензии мне показывались в выпадающем списке профессоров только те профессора, которые имеют отношение к этому курсу (только те профессора, которые преподавали этот курс).
class Professor(models.Model):
name = models.CharField()
class Course(models.Model):
name = models.CharField(max_length=200)
professor = models.ManyToManyField(Professor, through="Teaches", related_name='taughtBy')
class Teaches(models.Model):
course = models.ForeignKey(Course,on_delete=models.CASCADE,related_name="reviews_course")
professor=models.ForeignKey(Professor,on_delete=models.CASCADE,related_name="reviews_professor")
class Review(models.Model):
author = models.ForeignKey(User,on_delete=models.CASCADE,related_name="is_author")
course = models.ForeignKey(Course,on_delete=models.CASCADE,related_name="reviews_course")
professor = <<<<How do I enforce that professor and course have to have an existing relationship in Teaches?>>>>
Проверить операцию в отношениях m2m.
course_object.professors.all()
#or
professor_object.course_set.all()
EDIT
from django import forms
class ReviewForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['professor'] = #insert the above data