我正在尝试使用 Django 的 ORM 来使用额外方法和过滤方法生成查询。像这样的东西:
Model.objects.filter(clauseA).extra(clauseB).all()
Run Code Online (Sandbox Code Playgroud)
这会生成一个查询,但问题是过滤子句中的所有内容都与额外子句中的所有内容进行 AND 运算,因此 sql 如下所示:
SELECT * FROM model WHERE clauseA AND clauseB.
Run Code Online (Sandbox Code Playgroud)
我的问题是,有没有办法更改 Django 中查询的默认组合运算符,以便生成的查询将是:
SELECT * FROM model WHERE clauseA OR clauseB.
Run Code Online (Sandbox Code Playgroud)
尝试Q对象
Model.objects.filter(Q(clauseA) | ~Q(clauseB))
Run Code Online (Sandbox Code Playgroud)
编辑
尝试这个
Model.objects.filter(clauseA) | Model.objects.extra(clauseB)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2227 次 |
| 最近记录: |