我有三个型号:
course
有一个ManyToManyField,可以在名为student
的字段中访问Django的默认用户,并使用term
访问ForeignKey
一个qazxsw poi有一个外键与qazxsw poi
这是相关的模型:
assignment
当用户登录页面时,我想向他们展示类似course
的内容,我可以在其中显示每个学期以及学生注册的相应课程。
我可以访问学生注册的所有课程,我只是难以找出查询来选择条款。虽然我可能使用不正确,但我尝试使用'select_related'没有运气。到目前为止,我有class Assignment(models.Model):
title = models.CharField(max_length=128, unique=True)
points = models.IntegerField(default=0, blank=True)
description = models.TextField(blank=True)
date_due = models.DateField(blank=True)
time_due = models.TimeField(blank=True)
course = models.ForeignKey(Course)
class Course(models.Model):
subject = models.CharField(max_length=3)
number = models.CharField(max_length=3)
section = models.CharField(max_length=3)
professor = models.ForeignKey("auth.User", limit_choices_to={'groups__name': "Faculty"}, related_name="faculty_profile")
term = models.ForeignKey(Term)
students = models.ManyToManyField("auth.User", limit_choices_to={'groups__name': "Student"}, related_name="student_profile")
。有没有办法获得所有的术语和相应的课程,以便我可以按照我喜欢的方式显示它们?如果没有,我应该以不同的方式建模我的数据库吗?
您可以在这里使用course_list = Course.objects.filter(students = request.user).select_related('term')
或https://docs.djangoproject.com/en/1.11/ref/models/querysets/#values来获取相关模型values
的字段。
例如,扩展您当前的请求:
在查询集中为values_list
s检索所有Term
s'Term
和name
duration
我不确定你的Course
模型的字段是什么,但你会用你想要的任何一个替换Course.objects.filter(students = request.user).values('term__name', 'term__duration')
或Term
。
我觉得它对你很有帮助
name