我正在使用django建立一个网站,我想链接导师和学生



我目前一直坚持为学生分配导师的最佳方式,然后导师可以为这些学生添加课程,他们都可以看到这些课程,但你只能为课程分配一个外键"我的课程";。因此,我不确定是否值得创建一个MyStudents类,将学生存储在其中(但他们的用户与导师相同,除了is_tutor=false(,然后为每个学生创建一个导师可以添加到的MyLessons类。

我想我可以采取一种方法,我只是担心它不会很有效,或者以后会有一些严重的问题。比如另一种方法是,每节课都会自动接收导师的电子邮件(我将用户名设置为电子邮件(,然后在显示导师的课程时,它会浏览每节课,并用匹配的电子邮件显示课程。。。问题是,如果我把一个学生重新分配给一个新的导师,我希望新的导师能看到课程,但这意味着要手动更改每个课程,如果课程和学生太多,这个过程会变得很慢。

一个导师有很多学生。一个学生可能有不止一个导师。所以乍一看,这是一个ManyToMany关系字段。

一开始令人困惑的是,这种关系是对称的,但在一个对象上定义,而在另一个对象中仅隐式定义。但是隐式和显式字段的作用是相同的,用于操纵一组关系。

class Tutor( models.Model)
students = ManyToManyField( Student, related_name='tutors', ...)

然后

student_instance.tutors.add( tutor_instance)
tutor_instance.students.add( student_instance)

两者都实现了相同的目的。(在最简单的情况下。请阅读文档以了解例外情况(。

知道Django在幕后操纵一个隐式表可能有帮助,也可能没有帮助,该表的对象有两个字段,一个是学生的ForeignKey,另一个是导师的ForeignKey。有时,将此表显式化会很有用,这样您就可以将额外的信息附加到关系中,例如创建日期、创建人等;通过";ManyToMany选项。

这里还有更多的例子。

最新更新