我希望创建一个稍微复杂的查询,使用原始 SQL 编写起来相当容易。这是原始查询的示例:
SELECT my,fields FROM sales WHERE is_paid = False OR status = 'toship' AND otherfield = 'FOO' AND anotherfield = 'BAR'
这很简单,它生成 is_paid = False 的所有结果,然后为我的 AND 匹配生成第二个结果集。
现在我知道 Q 对象,我知道过滤,但我似乎无法思考如何在 Django ORM 中干净地实现这一点。
有小费吗?
谢谢
最佳答案
您可以继续以某种动态的方式构建 Q 对象。
例子:
query1 = Q(is_paid=False)
query2 = Q()
if status:
query2 = Q(status=status)
if otherfield:
query2 = query2 & Q(otherfield=otherfield)
if anotherfield:
query2 = query2 & Q(anotherfield=anotherfield)
query = query1 | query2
result = model.objects.filter(query)
关于django - 一个混合使用 filter() 和 Q 对象的 Django ORM 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1166074/