具有范围查找的 Django 多重过滤器
Django Multiple filter with range look-up
我的模特:
class Attendance(models.Model):
date = models.DateField()
subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
student = models.ForeignKey(Student, on_delete=models.CASCADE)
attendance = models.BooleanField()
我正在尝试的查询
att = Attendance.objects.filter(date__range=(st_date,ls_date)).filter(student__range=(1,10))
它给我一个错误:
File "C:\Users\user1\Desktop\backend\environment\lib\site-packages\django\db\models\sql\query.py", line 1184, in build_lookup
raise FieldError('Related Field got invalid lookup: {}'.format(lookup_name))
django.core.exceptions.FieldError: Related Field got invalid lookup: range
用 student__range
过滤没有意义,因为没有 Student
的范围:没有固有顺序,或者 successor/predecessor.
例如,您可以约束学生的 主键 或其他一些数值,其中:
Attendance.objects.filter(
date__range=(st_date,ls_date),
<strong>student__pk__range=(1,10)</strong>
)
如果您只想从查询中获取 10 个项目,您可以使用 index
att = Attendance.objects.filter(date__range=(st_date,ls_date))[0:9]
我的模特:
class Attendance(models.Model):
date = models.DateField()
subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
student = models.ForeignKey(Student, on_delete=models.CASCADE)
attendance = models.BooleanField()
我正在尝试的查询
att = Attendance.objects.filter(date__range=(st_date,ls_date)).filter(student__range=(1,10))
它给我一个错误:
File "C:\Users\user1\Desktop\backend\environment\lib\site-packages\django\db\models\sql\query.py", line 1184, in build_lookup
raise FieldError('Related Field got invalid lookup: {}'.format(lookup_name))
django.core.exceptions.FieldError: Related Field got invalid lookup: range
用 student__range
过滤没有意义,因为没有 Student
的范围:没有固有顺序,或者 successor/predecessor.
例如,您可以约束学生的 主键 或其他一些数值,其中:
Attendance.objects.filter(
date__range=(st_date,ls_date),
<strong>student__pk__range=(1,10)</strong>
)
如果您只想从查询中获取 10 个项目,您可以使用 index
att = Attendance.objects.filter(date__range=(st_date,ls_date))[0:9]