始终为True的Q对象 [英] Always True Q object
本文介绍了始终为True的Q对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想动态地创建Django ORM过滤器查询的一部分,现在我可以这样做:
I want to create some part of Django ORM filter query dinamicly, now I can do:
if some:
Obj.filter(
some_f1=some_v1,
f1=v1,
f2=v2,
f3=v3,
f4=v4,
...
)
else:
Obj.filter(
f1=v1,
f2=v2,
f3=v3,
f4=v4,
...
)
我想要没有代码重复的东西,像这样:
I want something without code duplicate like this:
Obj.filter(
Q(some_f1=some_v1) if some else True, # what to use instead of True?
f1=v1,
f2=v2,
f3=v3,
f4=v4,
...
)
推荐答案
下面是一种获取始终为真的Q对象的方法:
Here's a hacky way to get an always true Q object:
always_true = ~Q(pk=None)
这取决于主键不能为null的事实.
This depends on the fact that the primary key cannot be null.
这篇关于始终为True的Q对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文