让我告诉你这样的情况:
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()函数不起作用。
我希望你们中的一些人可以帮我解决这个问题:)
答案 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