Django过滤查询集仅当变量不为空时

我有一个查询集,它由 2 个变量过滤

family = ModelsClass.objects.filter(foo=var1).filter(bar=var2)

如果 var1 和 var2 不为空,一切正常,但 var1 和 var2 可以为空。在这种情况下,我需要排除 Null 一个。

例如,如果 var1 为 Null,则它必须仅通过 var2 进行过滤,反之亦然。

有没有办法在过滤器查询集或其他东西中插入一个 if 条件?

TY

回答

为什么不检查变量是否为空然后过滤它?您不必在一行中完成。Django 的 queryset 对象是惰性求值的,您可以在单独的行中过滤或执行其他操作。

family_queryset = ModelClass.objects.all()

if var1:
    family_queryset = family_queryset.filter(foo=var1)

if var2:
    family_queryset = family_queryset.filter(bar=var2)


以上是Django过滤查询集仅当变量不为空时的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>