#python #django
#python #django
Вопрос:
Я пытаюсь построить связь между моделью предмета и моделью учителя и моделью классов. Вот как я это связываю-
Предмет может преподаваться во многих классах, и в классе может быть много предметов. Предмет в классе может преподавать только один учитель.
Итак, в основном я пытаюсь сделать следующее: есть предмет, скажем, математика, предмет можно преподавать во многих классах, скажем, с 1 по 10 класс, и в разных классах будут преподавать разные учителя.
Вот моя предметная модель:
class Subjects(models.Model):
subject_id = models.CharField(unique=True, max_length=20)
classes = models.ManyToManyField(Classes, through='ThroughTeacher')
Модель сквозного учителя:
class ThroughTeacher(models.Model):
class_id = models.ForeignKey(Classes, null=True, on_delete=models.SET_NULL)
teacher = models.ForeignKey(Teacher, null=True, on_delete=models.SET_NULL)
Классы моделируют:
class Classes(models.Model):
class_id = models.CharField(unique=True, max_length=30)
teacher = models.ManyToManyField(Teacher)
Модель учителя:
class Teacher(models.Model):
name = models.CharField(max_length=30)
contact = models.CharField(max_length=10)
Это ошибка, которую я получаю:
subjects.ThroughTeacher: (fields.E336) The model is used as an intermediate model by
'subjects.Subjects.classes', but it does not have a foreign key to 'Subjects' or 'Classes'.
Комментарии:
1. Поскольку вы используете его как
through=...
модель fromSubjects
toClasses
, вам нужно добавить как минимум aForeignKey
toSubjects
и aForeignKey
toClasses
.
Ответ №1:
Поскольку вы используете его как through=...
модель from Subjects
to Classes
, вам нужно добавить как минимум a ForeignKey
to Subjects
и a ForeignKey
to Classes
.
Таким образом, вы моделируете ThroughTeacherModel
как:
class ThroughTeacher(models.Model):
class_ = models.ForeignKey(Classes, null=True, on_delete=models.SET_NULL)
teacher = models.ForeignKey(Teacher, null=True, on_delete=models.SET_NULL)
subject = models.ForeignKey(Subjects, null=True, on_delete=models.SET_NULL)