我需要在我的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()
您也可以在filter
或exclude
上执行任何其他操作,您主要可以从enrolled_subjects
访问管理器。
这里有更多关于ManyToMany
字段的例子