具有范围查找的 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]