【问题标题】:Filter queryset by field with multiple options使用多个选项按字段过滤查询集
【发布时间】:2020-03-07 08:09:57
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: python django


    【解决方案1】:

    你需要在这里使用逻辑或,而不是and,所以使用|而不是&:

    MyModel.objects.filter(Q(date__isnull=True) <b>|</b> Q(date__range=[…])

    或者您可以将其简化为:

    MyModel.objects.filter(Q(<b>date=None</b>) <b>|</b> Q(date__range=[…])

    通过使用逻辑与,您想检索MyModels,其中data-字段两者 NULL 和… 范围内相同 记录。没有一个值是 NULL 并且在同一时间范围内。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-09
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 2023-01-04
      • 1970-01-01
      • 1970-01-01
      • 2018-10-28
      相关资源
      最近更新 更多