使用 Extra 和 Filter 进行 Django OR 查询

jce*_*ern 5 python django orm

我正在尝试使用 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)

suh*_*ain 5

尝试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)