python - 如何在 Django 中将条件放入 ALL 或 Something 的链式过滤器中
问题描述
我收到了some_id
来自请求。如果some_id
是-1
我必须选择 ALL 或选择特定的some_id
.
所以我想要这样的东西-
model.objects.filter(some_id = '*' if some_id_val = -1 else some_id_val, some_id_2 = '*' if some_id_val_2 = -1 else some_id_val_2, ... )
我知道我可以if
像这样链接 -
qs = model.objects.all()
if some_id_val != -1:
qs = qs.filter(some_id = some_id_val)
if some_id_val_2 != -1:
qs = qs.filter(some_id_2 = some_id_val_2)
.
.
.
但我想要一个单线解决方案。
解决方案
您可以将其留空:
model.objects.filter(**{} if some_id_val = -1 else id=some_id_val)
推荐阅读
- python - 如何在python中穿入多个乌龟头?
- asp.net-mvc - ASP.NET MVC 视图:不能在 @Url.Content(@item.l_pdf ) 内放置任何动态参数
- javascript - React Context 没有更新和返回初始值
- c - leet代码问题2(加两个数字)使用malloc时出现运行时错误
- gnuplot - Gnuplot,具有不同调色板的多个splots
- javascript - 如何在 PHP/NodeJS 中将可编辑的 PDF 转换为不可编辑的 PDF?
- php - 如何在 Laravel 中运行一个独立的 PHP 脚本?
- typescript - 如何通过 Cloud Functions HTTP 请求检查 Firebase 规则用户权限
- android - 安装 Cordova 和 ionic 的问题
- xslt - 将日期从时区转换为 UTC XSLT 1.0