Django:或使用多个语句

2024-06-16 11:55:33 发布

您现在位置:Python中文网/ 问答频道 /正文

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

使用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


Tags: or对象ifwhere条件mymodelcol2col1
2条回答

您还可以使用union()QuerySet方法

q1 = MyModel.objects.filter(cond1)
q2 = MyModel.objects.filter(cond2)
q3 = MyModel.objects.filter(cond3)

q2.union(q1)
q3.union(q1)

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

cond = Q(col1=val1)
if some_condition:
    cond |= Q(col2=val2)

q = MyModel.objects.filter(cond)

相关问题 更多 >