python - Django:或与多个语句

标签 python django orm

我想获取一个对象,有时有一个条件,有时添加(或)另一个条件。

使用 Laravel (PHP),这很容易做到:

$q = MyModel::where('col1', $val1);
if ($userWantsToAddAnotherOrCondition) {
    $q = $q->orWhere('col2', $val2);
}

最后我有一个条件为 'col1' = $va1 的查询或 'col1' = $va1 OR 'col2' = $val2 .

在Django(python)中,我只知道这样:

q = MyModel.objects.filter(Q(col1=val1) | Q(col2=val2))

如何用另一个语句添加第二个条件(col2=val2)?

最佳答案

您可以使用逻辑或运算符| 链接Q 对象。例如:

cond = Q(col1=val1)
if <i>some_condition</i>:
    <b>cond |=</b> Q(col2=val2)

q = MyModel.objects.filter(cond)

关于python - Django:或与多个语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60381674/

相关文章:

symfony - 教义 : ORM QueryBuilder or DBAL QueryBuilder

python - django-tagging 的安装问题

python - matplotlib 中所有绘图的轴从公里到米线性缩放

python - 无法让 url 函数与 django 中的特定语法一起使用

python - 基于 Django + Celery 的应用程序的动态(即运行时可配置)日志配置

java - 从hibernate sql join获取多个实体

python - 对于相同的值仅迭代一次 for 循环

java - 斯坦福标注器不工作

python - 同步数据库 - "DatabaseError: no such table: django_site"

java - 如何在mybatis中的IN子句中使用超过1000个参数?