首页 > 解决方案 > 如何在 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)
.
.
.

但我想要一个单线解决方案。

标签: pythondjango

解决方案


您可以将其留空:

model.objects.filter(**{} if some_id_val = -1 else id=some_id_val)


推荐阅读