使用多个选项按字段过滤查询集

时间:2019-11-11 16:00:33

标签: python django

具有一些带有字段date的抽象模型:

class MyModel(models.Model):
    date = models.DateField(null=True)
    ...

如何构成一个过滤查询,该查询返回date字段为Null或在给定日期范围内的所有记录?

这是我到目前为止尝试过的,但是我总是得到空的查询集:

_ = MyModel.objects.filter(Q(date__isnull=True) & Q(date__range=[...])

1 个答案:

答案 0 :(得分:1)

您需要在此处使用逻辑,而不是,因此使用|代替&

MyModel.objects.filter(Q(date__isnull=True) | Q(date__range=[…])

或者您可以简化为:

MyModel.objects.filter(Q(date=None) | Q(date__range=[…])

通过使用逻辑运算符,您要检索MyModel字段为两者 data且范围为{{1 }},用于相同记录。没有值是NULL,并且在同一时间范围内。