python - 仅当变量不为空时,Django 过滤查询集
问题描述
我有一个查询集,它按 2 个变量过滤
family = ModelsClass.objects.filter(foo=var1).filter(bar=var2)
如果 var1 和 var2 不为 null,则一切正常,但 var1 和 var2 可以为 Null。在这种情况下,我需要排除 Null 。
例如,如果 var1 为 Null,则它必须仅按 var2 过滤,反之亦然。
有没有办法在过滤器查询集或其他东西中插入 if 条件?
泰
解决方案
你为什么不检查变量是否为空然后过滤它?您不必在一行中完成。Django 的查询集对象是惰性求值的,您可以在单独的行中过滤或执行其他操作。
family_queryset = ModelClass.objects.all()
if var1:
family_queryset = family_queryset.filter(foo=var1)
if var2:
family_queryset = family_queryset.filter(bar=var2)
推荐阅读
- php - str_to_date 函数在复杂的 mysql 查询 joomla 中不起作用
- android - Firebase:将分析和崩溃数据报告到不同的项目
- javascript - 使用 JavaScript 从对象中删除
- mysql - 分组并拥有 MYSQL
- ruby-on-rails - Rails ActiveAdmin 为 PublicActivity gem 创建资源
- python - 变量检查器(来自 nb 扩展)在 Jupyter Notebook 5.6.0 中不起作用
- javascript - 在选择选项更改时隐藏/显示 div 不起作用
- java - JavaFX 在鼠标悬停时显示一个窗格
- prolog - 比较事实值的 Prolog 谓词
- python - Pycharm 由于 SSL 安装包失败