数值数据的条件表达式 - Python / Django

时间:2017-02-11 17:09:54

标签: python django django-orm conditional-operator

让我告诉你这样的情况:

data = [Station.objects
                        .filter(nr=form.cleaned_data['station'])
                        .aggregate(avg=Avg('residual'),
                                   stdev=StdDev('residual'),
                                   number=Count('residual'),
                                   good_observations = Count(Case(When(abs('residual')<250))),
                                   outliers=Count(Case(When(abs('residual')>=250))),
                                   )]

我想计算数据库中的行,其中“残差”(浮点值)小于或大于250,但它不起作用。

首先:我有TypeEror:

  

init ()接受Q对象或查找作为关键字参数

其次:

由于TypeError和字符串值作为输入,

abs()函数不起作用。

我希望你们中的一些人可以帮我解决这个问题:)

1 个答案:

答案 0 :(得分:0)

正如错误消息中所述,__init__ When采用关键字参数或Q objects,非常类似于QuerySet.filter。您可以使用abs个对象来模仿Q

When(Q(residual__lt=250) & Q(residual__gt=-250))  # -250 < residual < 250
When(Q(residual__gte=250) | Q(residual__lte=-250))  # other cases