python - 按具有多个选项的字段过滤查询集

标签 python django

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

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

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

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

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

最佳答案

这里需要使用逻辑,而不是,因此使用|而不是& :

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=[…])

通过使用逻辑与,您想要检索 MyModel,其中 data 字段为 both NULL 且在 范围内(对于相同记录)。没有值同时为 NULL 和范围内的值。

关于python - 按具有多个选项的字段过滤查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58804743/

相关文章:

python - 在网络服务器之外运行 python 脚本

python - django 服务器代码不更新

python - Sentry 如何自动发送日志(除了邮件)?

python - 为什么 dataclasses.astuple 返回类属性的深度拷贝?

python - 在 Ubuntu 14.04 上安装 pytesser

Python PIL Crop 不裁剪图像

python - 将 FileType 与 django 自定义管理命令一起使用?

python - 如何在 Django 中使用 RequestFactory 将 PK 或 slug 传递给 DetailView?

python - 如何修复python中pydicom的编码问题

python - 如果满足某些条件,如何继承django中的模板?