[英]Django - filtering prefetch_related to today's date
過濾 prefetch_related。
我有兩張桌子:
class studentAttendance(models.model):
id = models.AutoField(primary_key=True)
date = models.DateField()
status = models.CharField(max_length=255)
student = models.ForeignKey(Student, related_name='student', on_delete=models.PROTECT)
objects = models.Manager()
class Student(models.model):
id = models.AutoField(primary_key=True)
fname = models.CharField(max_length=255)
active = models.BooleanField(default=True)
objects = models.Manager()
客觀的:
我想要一個“每日登記”html 表格。 加載每日記錄時,我希望它顯示以下列:
名字 | 姓氏 | 狀態 |
在它旁邊,我將為老師選擇 select “Present” 或 “Absent”。
我的問題:
我需要顯示所有“活躍”學生的列表,然后為尚未登錄的學生顯示空狀態,或者為已登錄的學生顯示已經存在的值。
我認為由於一個學生在出勤表中可以有很多“天”,這算作“預取相關”場景,而不是“選擇相關”。 如果我從出勤表轉到學生表,那將是“select_related”,因為學生表中只有一行匹配。 這就是我最初的方式,但后來我很快意識到,對於那些還沒有登錄的學生......他們的記錄不會被拉過。
所以我第一次嘗試獲取預取是:
from students.models import Student
from datetime import date
student_data = Student.objects.filter(active=True).prefetch_related('student')
但是,我需要過濾 prefetch_related 以針對今天的日期進行過濾。 我在嘗試:
student_data = ...filter(date=date.today())
但我收到一個錯誤:
“語法錯誤:表達式不能包含賦值,也許你的意思是“==”?
我在谷歌上看到了很多關於“prefetch_related(prefetech('student', queryset='')) 的東西,但這似乎不起作用,而且我收到了“意外關鍵字“prefetch”等錯誤。
請幫助或指出我正確的方向。
謝謝!
您的過濾器需要:
student_data = Student.objects.filter(
active=True,
student__date=date.today()
).prefetch_related('student')
要過濾帶有或不帶有select_related
和prefetch_related
的相關字段,您需要一個雙下划線。
請參閱此處的 Django 文檔進行過濾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.