Django Annotate Conditional

时间:2015-07-29 23:59:19

标签: python django conditional annotate

我想要一个用户列表,其中包含每个用户的总费用。我只想在到期金额中包含费用。这是所有费用的总和,它不会过滤掉尚未到期的费用。

user_array = User.objects.all().annotate(
   total_sum=Sum('charge__amount', only=Q(charge__due_date__lte=date))
)

1 个答案:

答案 0 :(得分:1)

尝试

user_array = User.objects.filter(charge__due_date__lte=date).annotate(amount_due=Sum('charge__amount'))

https://docs.djangoproject.com/en/1.8/topics/db/aggregation/#order-of-annotate-and-filter-clauses推动。文档声称只有过滤后的关系值才会被注释。