编程语言
首页 > 编程语言> > python – 具有可变数量的过滤器参数的Django查询

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

作者:互联网

我有一个基于某些条件从MyModel获取的Django查询:

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

是否有可能消除if beta:check并在一行中执行,即仅在beta不是时才在y上进行查询过滤

这是一个很好的(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,django-queryset
来源: https://codeday.me/bug/20190830/1770710.html