【发布时间】:2016-06-23 23:05:30
【问题描述】:
在 Django ORM 中,如何创建一个始终为 False 的 Q 对象?
这与always True Q objects的问题类似,但反过来。
请注意,这不起作用:
Foobar.objects.filter(~Q()) # returns a queryset which gives all objects
为什么我想要一个 Q 对象而不是简单的 False 值?这样我就可以将它与其他 Q 值结合起来,例如:
condition = always_true_q_object
if something_or_other:
condition = condition | foobar_that_returns_a_q_object()
if something_or_other2:
condition = condition | foobar_that_returns_a_q_object2()
【问题讨论】:
-
你的意思是
.exclude(Q())?.. -
@Sayse 我可以看到它是如何工作的。但是,我想要一个始终为 False 的 Q 对象,以便我以后可以使用它与具有 AND 和 OR 逻辑的其他 Q 对象组合。
-
如果您可以显示 minimal reproducible example 确切地说明您要查找的内容,这可能会有所帮助
-
为什么您想要一个始终评估为 False 的查询而不是使用
False本身? -
根据我的经验,这是很常见的模式。在 ORM 领域之外,我已经看到在 MySQL 查询中用于此目的的
1=0和1=1。我不能简单地在 Django 中做到这一点似乎很愚蠢。
标签: django