我有三种模式:
course
有一个ManyToManyField,用于访问名为student
的字段中的Django默认用户,以及term
assignment
的ForeignKey为course
以下是相关模型:
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")
当用户登录页面时,我想向他们展示类似bootstrap collapse card的内容,我可以在其中显示每个学期以及学生注册的相应课程。
我可以访问学生注册的所有课程,我只是难以找出查询来选择条款。我尝试过使用“select_related”'没有运气,虽然我可能错误地使用它。到目前为止,我已经course_list = Course.objects.filter(students = request.user).select_related('term')
了。有没有办法获得所有条款及其相应的课程,以便我可以按照我喜欢的方式展示它们?如果没有,我应该以不同的方式为我的数据库建模吗?
答案 0 :(得分:0)
https://docs.djangoproject.com/en/1.11/ref/models/querysets/#values
您可以在此处使用values
或values_list
来获取相关模型Term
的字段。
例如扩展您当前的请求:
要检索所有Term
s'查询集中name
的{{1}}和duration
Course
我不确定您的Course.objects.filter(students = request.user).values('term__name', 'term__duration')
模型的字段是什么,但您会将Term
或name
替换为您想要获得的字段。
答案 1 :(得分:0)
我认为它可以帮助你
terms = Terms.objects.filter(....) # terms
cources0 = terms[0].course_set.all() # courses for terms[0]
cources0 = terms[0].course_set.filter(students=request.user) # courses for terms[0] for user