[英]Django chain multiple queries in view
我有三種模式:
一course
有一個ManyToManyField,它在一個名為student
的字段中訪問Django的默認User,以及一個帶有term
的ForeignKey
assignment
具有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")
當用戶登錄頁面時,我想給他們看類似該引導折疊卡片的信息 ,其中可以顯示每個術語以及該學生注冊的相應課程。
我能夠訪問該學生所注冊的所有課程,但是我很難確定要選擇的條件的查詢。 我嘗試使用'select_related'時沒有運氣,盡管我可能使用不正確。 到目前為止,我已經得到了course_list = Course.objects.filter(students = request.user).select_related('term')
。 有沒有一種方法可以獲取所有術語及其相應的課程,以便我可以按自己的方式顯示它們? 如果不是,是否應該以其他方式對數據庫建模?
https://docs.djangoproject.com/zh-CN/1.11/ref/models/querysets/#values
您可以在此處使用values
或values_list
來獲取相關模型Term
的字段。
例如,根據當前請求進行擴展:
在查詢集中檢索Course
的所有Term
name
和duration
Course.objects.filter(students = request.user).values('term__name', 'term__duration')
我不確定您的Term
模型的字段是什么,但是您將用試圖獲得的name
或name
替換name
或duration
。
我認為這對您有幫助
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.