gpt4 book ai didi

python - Django ORM 中的 SumIf(条件求和)

转载 作者:行者123 更新时间:2023-11-30 23:18:39 25 4
gpt4 key购买 nike

我有两个模型:Publisher 和 Book。

我正在检索发布商

Publisher.objects.filter(name="A").annotate(total_pages=Sum('books__num_pages'))

但我只对 2014 年写的书的总页数感兴趣。

我不熟悉在 Django 中创建 SUMIF 的任何选项。其他人是如何解决这个问题的?

我认为应该有可能做类似的事情

Sum('books__num_pages', where={'year': 2014})

或者类似的东西。

最佳答案

您非常接近实际正确的解决方案(或者 django 在 2014 年可能没有它?),Sum function has a filter参数,所以你可以这样做:

from django.db.models import Sum, Q
...
Publisher.objects.filter(name="A").annotate(total_pages=Sum('books__num_pages', filter=Q(year=2014)))

关于python - Django ORM 中的 SumIf(条件求和),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26574762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com