django数据库模型关系



我需要在我的web应用程序中工作,例如,我的模型看起来像这样:

class Subjects(models.Model):
subject = models.CharField(max_length= 255)
class Student(models.Model):
student = models.Foreignkey(Student,related_name="student", on_delete=models.CASCADE)
enrolled_subjects = models.ManyToManyField(Subjects)

class StudentGrade(models.Model):
student = models.Foreignkey(Student,related_name="student", on_delete=models.CASCADE)
subject = models.ForeignKey(?)
grade = ...
period = models.ForeignKey(SchoolPeriod)

如何访问Student Grades模型中Student对象的enrolled_subjects?

我应该这样做:(我不确定我是否可以做这样的模型。py)

class StudentGrade(models.Model):
ENROLLED_SUBJECTS_CHOICES = Student.objects.filter(//some filter here)
student = models.Foreignkey(Student,related_name="student", on_delete=models.CASCADE)
subject = models.ChoiceField(choices= ENROLLED_SUBJECTS_CHOICES, default= None,)
grade = ...
period = models.ForeignKey(SchoolPeriod)

简单地从实例访问ManyToMany字段,然后您可以对其应用查询集操作。

例如:

student_subjects = StudentGrade.objects.get(student_id=1).student.enrolled_subjects.all()

您也可以在filterexclude上执行任何其他操作,您主要可以从enrolled_subjects访问管理器。

这里有更多关于ManyToMany字段的例子

最新更新