【问题标题】:Django Annotate ConditionalDjango注释条件
【发布时间】:2015-10-21 04:24:43
【问题描述】:

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

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

【问题讨论】:

    标签: python django conditional annotate


    【解决方案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 的启发。文档声称只有过滤后的关系值会被注释。

    【讨论】:

    • 效果很好!太感谢了!我完全被那个查询卡住了。
    猜你喜欢
    • 2011-10-23
    • 1970-01-01
    • 2017-11-13
    • 2021-04-05
    • 2017-09-22
    • 2017-06-26
    • 1970-01-01
    • 2011-03-03
    • 2010-11-20
    相关资源
    最近更新 更多