我有两个模型: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/