簡體   English   中英

Django在視圖中鏈接多個查詢

[英]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

您可以在此處使用valuesvalues_list來獲取相關模型Term的字段。

例如,根據當前請求進行擴展:

在查詢集中檢索Course的所有Term nameduration

Course.objects.filter(students = request.user).values('term__name', 'term__duration')

我不確定您的Term模型的字段是什么,但是您將用試圖獲得的namename替換nameduration

我認為這對您有幫助

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM