【问题标题】:django queryset filter in list with nulldjango queryset 过滤器在列表中为空
【发布时间】:2013-12-12 02:00:42
【问题描述】:

我正在尝试创建一个查询来生成一个查询集,并且我希望该查询搜索一个值列表,包括该字段何时为 NULL。通常人们会做这样的事情:

search_query = search_query & (Q(class_field_in=["a", "b"]) | Q(class_field_isnull=True))

但是在这种情况下,我希望传入一个值列表来生成列表,即

search_query = search_query & Q(class_field_in=[x for x in alist])

通过这种方式,我可以根据表单输入解耦传入的值。我试图弄清楚是否可以将 Q(class_field_isnull=True) 表示为我可以传入的变量。我尝试过 None、"None"、"" 和 " NULL”没有成功。这甚至可能吗?如果可以,有人知道怎么做吗?还是我做事的方式不对?

非常感谢一如既往。

【问题讨论】:

  • 似乎是一个错误。 __in 在 2021 年不适用于 None

标签: django-queryset


【解决方案1】:

为什么不换一种方式呢:

for x in aslist:
   query = query & Q(class_field=x)
query = query & Q(class_field__isnull=True)

甚至像这样:

q = list()
for x in aslist:
   q.append(Q(class_field=x))
q.append(Q(class_field__isnull=True))
query=reduce(operator.or_,q)

【讨论】:

    猜你喜欢
    • 2011-08-11
    • 2016-03-22
    • 2020-01-01
    • 2014-07-13
    • 2018-01-21
    • 2013-09-08
    • 2021-06-16
    • 2018-06-24
    • 2018-10-09
    相关资源
    最近更新 更多