Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-过滤与今天日期相关的预回迁_Python_Django - Fatal编程技术网

Python Django-过滤与今天日期相关的预回迁

Python Django-过滤与今天日期相关的预回迁,python,django,Python,Django,过滤与预取有关的内容 我有两张桌子: 学生出勤数据 学生人事记录 目标: 我想有一个每日注册html表格。加载每日注册表时,我希望它显示以下列: 名字| 姓| 地位| 在它旁边,我将有复选框供老师选择出席或缺席 我的问题: 我需要显示所有活动学生的列表,然后为尚未登录的学生显示空状态,或者为已登录的学生显示已存在的值 我认为,由于一名学生在出勤表中可以有很多天,因此这算作“预回迁相关”场景,而不是“选择相关”。如果我走另一条路,从考勤表到学生,那么这将是一个“选择相关”,因为学生表中只有一行匹配

过滤与预取有关的内容

我有两张桌子:

学生出勤数据 学生人事记录 目标:

我想有一个每日注册html表格。加载每日注册表时,我希望它显示以下列:

名字| 姓| 地位|

在它旁边,我将有复选框供老师选择出席或缺席

我的问题:

我需要显示所有活动学生的列表,然后为尚未登录的学生显示空状态,或者为已登录的学生显示已存在的值

我认为,由于一名学生在出勤表中可以有很多天,因此这算作“预回迁相关”场景,而不是“选择相关”。如果我走另一条路,从考勤表到学生,那么这将是一个“选择相关”,因为学生表中只有一行匹配。起初我就是这样做的,但后来我很快意识到,对于那些还没有注册的学生来说,他们的记录不会被打破

因此,我第一次尝试获取预回迁是:

from students.models import Student
from datetime import date

student_data = Student.objects.filter(active=True).prefetch_related('student')

但是,我需要根据今天的日期筛选要筛选的预回迁。我正在努力:

student_data = ...filter(date=date.today())
但我有一个错误:

SyntaxError:表达式不能包含赋值,可能您的意思是==

我在谷歌上看到了很多关于预回迁的东西,比如相关的预回迁“学生”,queryset=但这似乎不起作用,而且我会遇到一些错误,比如意外的关键字预回迁等

请帮我或给我指出正确的方向


谢谢

您的过滤器需要:

student_data = Student.objects.filter(
    active=True,
    student__date=date.today()
).prefetch_related('student')
要筛选包含或不包含“选择\u相关”和“预回迁\u相关”的相关字段,需要使用双下划线


查看Django文档以进行筛选。

只是关于Django模型的一个小提示,您不需要指定id列,Django会自动为您执行此操作:。这有助于我认为Dean,至少我不再出现语法错误。我对两件事有点困惑:1为什么我要做一个uuu日期=但不需要做活动=真的2如果我做了:对于学生中的I数据:返回一些对象的printi但是,如果我做了:对于学生中的I数据:printi.student.status或printi.student\u status似乎没有任何效果…看看我链接的文档。对于任何相关字段,例如来自另一个表的字段,您必须仅在Django中使用_u来过滤它们。因此,在您的示例中,您需要使用_u从学生模型中筛选StudentAttendence模型上的任何字段。因此,要筛选状态,您还需要:Student.objects.filterstudent\u status。学生状态的学生部分来自您设置的相关名称。只有在使用.filter时才需要使用。对于你的第二个问题,For循环将与i.student.status一起工作,但是这种关系不是一对一的。因此,从技术上讲,i.student可以为一个学生返回比StudentAttention更多的注意力。因此,您需要使用i.student.all或i.student.all[0]来获取第一个。看看这些文件:。。。一次超过一名学生的出席人数***应该是一对一。感谢这是一个多对一的关系,但我们最初使用date=date.today对其进行了筛选,因此返回时它将是一个空集。一行将研究如何使字段date和student_id唯一约束…即。更新或创建。
student_data = ...filter(date=date.today())
student_data = Student.objects.filter(
    active=True,
    student__date=date.today()
).prefetch_related('student')