始终为True的Q对象 [英] Always True Q object

查看:114
本文介绍了始终为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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆