我需要过滤模型类的对象。我想查询所有' date'字段在某个范围内,其他2个字段中的一个为True(一个或两个)。
以下代码似乎不起作用:
visits = Visit.objects.filter(date__range=(now, delta), Q(sms_reminder=True) | Q(email_reminder=True))
有什么建议吗?
答案 0 :(得分:1)
交换过滤器的顺序:
visits = Visit.objects.filter(
Q(sms_reminder=True) | Q(email_reminder=True),
date__range=(now, delta),
)
来自Q
docs:
但是,如果提供了Q对象,则它必须位于任何关键字参数的定义之前。
标准python:args然后是kwargs。 (抓了我几次)
答案 1 :(得分:0)
如果您的过滤器是(A OR B)和C
您可以尝试使用此过滤器:
visits = Visit.objects.filter( (Q(sms_reminder=True)|Q(email_reminder=True)) & Q(date__range=(now, delta)))