【问题标题】:How to AND chain filters in a django queryset?如何在 django 查询集中链接过滤器?
【发布时间】:2016-03-20 19:14:52
【问题描述】:

This question makes clear how chaining and multiple argument filters are different 但它没有指定如何使它们的链式过滤器等效。

例如,给定代码:

query = mymodel.filter(name="Foo",foreignkey_property1="Bar",foreignkey_property2="Zap")

是否有可能从链式查询集中获得 and 版本,并让上面的查询和下面的查询等效:

query = mymodel.filter(name="Foo",foreignkey_property1="Bar")
query = query.filter(foreignkey_property2="Zap",???)

我确定我已经阅读过这是怎么可能的,但找不到。

【问题讨论】:

  • 啊!好吧,这就是我的代码正在做的事情。我怎样才能使它们等效?
  • 您是否可以为foreignkey_property1="Bar"foreignkey_property2="Zap" 条件创建单独的Q 查询,然后将它们组合成一个filter
  • 嗯...我已经使用 Q()'s 重写了这个,但我想保持开放状态,看看是否有其他解决方案,以防有人没有那么奢侈。

标签: python django django-queryset


【解决方案1】:

试试这个:

from django.db.models import Q

query = mymodel.filter(Q(name="Foo",foreignkey_property1="Bar") && Q(foreignkey_property2="Zap"))

【讨论】:

  • 'Q' 模块用于在过滤器中做条件案例
  • 双 & 符号 && 应该是单 & 符号 &。据我所知,&& 在 Python 中不是一个有效的符号,结果是 SyntaxError
猜你喜欢
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 2011-05-22
  • 2016-02-01
  • 2014-06-12
  • 2015-09-14
  • 1970-01-01
  • 2020-11-13
相关资源
最近更新 更多