这个想法是,如果学生不理解某些内容,学生可以向他们的老师发送ping,但首先我要努力让学生,老师和他们所处的任何课程有关系 所以在我的模特经过几次尝试后,我想出了这个
模型
from django.db import models
class Student(models.Model):
name = models.CharField(max_length=50)
class Teacher(models.Model):
name = models.CharField(max_length = 70)
class Lecture(models.Model):
name = models.CharField(max_length = 70)
members = models.ManyToManyField(
Student,
through = 'part_of_class',
through_fields = ('lecture', 'student'),
)
lecturers = models.ManyToManyField(
Teacher,
through = 'Teacher_of_class',
through_fields = ('lecture', 'teacher'),
)
class Teacher_of_class(models.Model):
lecture = models.ForeignKey(Lecture)
teacher = models.ForeignKey(Teacher)
class part_of_class(models.Model):
lecture = models.ForeignKey(Lecture)
student = models.ForeignKey(Student)
问题是添加一个学生领域搞砸了,我甚至不确定这是正确的方式,这听起来在我脑海中,但我确信我错过了一些东西,任何线索?
答案 0 :(得分:1)
我不完全确定您需要明确的中介关系(Teacher_of_class和part_of_class)。相反,您应该尝试利用其他模型中的字段来执行您想要的操作。例如,一个讲座通常会有一个以上的老师,还是只有一个?您可以使用Lecture中的某个字段对其中任何一个进行建模。
编辑:道歉,我最初误读了你的代码字段。我的建议是不要使用额外的关系类,除非你知道为什么需要它。
答案 1 :(得分:0)
如果你只想要一个可以有多个学生和多个讲师的讲座,你不需要有中间模型,如果你没有指定任何中级模型,Django会为你处理。如果你想存储具有这种关系的东西,我只会使用中间表。
此外,当您尝试将学生和教师对象添加到讲座模型时,请务必保存它们。
您的保存代码应如下所示:
aStudent = Student(name="Taco")
aTeacher = Teacher(name="Burrito")
aStudent.save()
aTeacher.save()
aLecture = Lecture(name="Cooking With Python!")
aLecture.members.add(aStudent)
aLecture.lecturers.add(aTeacher)
aLecture.save()
希望这有帮助!