gpt4 book ai didi

python - 具有可变数量的过滤器参数的 Django 查询

转载 作者:太空狗 更新时间:2023-10-30 02:31:05 25 4
gpt4 key购买 nike

我有一个根据特定条件从 MyModel 获取的 Django 查询:

if beta:
MyModel.object.filter(x=alpha, y=beta)
else:
MyModel.object.filter(x=alpha)

是否有可能消除 if beta: 检查并在一行中执行它,即仅当 beta 时才对 y 进行查询过滤器> 不是 None

这是一个好的(Djangonic)方式吗:

MyModel.object.filter(**{'x':alpha, 'b':beta} if beta else **{'x':alpha})

或者是否有可能做这样的事情(我知道以下是错误的,但可以修复以给出正确的含义吗?):

MyModel.object.filter(Q('x'=alpha) & (beta && Q('y'=beta)))

最佳答案

在这种情况下,我使用如下解决方案:

filter_kwargs = {'x': alpha}
if beta:
filter_kwargs['y'] = beta

MyModel.objects.filter(**filter_kwargs)

当项目需求出现新情况时很容易扩展,但不幸的是它不是一个单一的解决方案。

关于python - 具有可变数量的过滤器参数的 Django 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23753158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com