如何在QuerySet中聚合的FK I&m; m上执行过滤器?

时间:2015-12-01 14:54:19

标签: django orm django-queryset

我有一个(工作)查询,看起来像

authors = Authors.objects.complicated_queryset()
with_scores = authors.annotate(total_book_score=Sum('books__score'))

它找到所有通过complicated_queryset方法返回的作者,然后总结他们的书籍总分。但是,我希望修改此QuerySet,使其仅包含去年发布的书籍的分数。假装语法:

with_scores = authors.annotate(total_book_score=Sum('books__score'),
                               filter=Q(books__published=2015))

这是可以使用QuerySets还是我必须编写原始SQL(或者,我猜,两个单独的查询)才能获得该行为?

1 个答案:

答案 0 :(得分:1)

如果您正在使用Django 1.8 +

,则可以尝试使用Case

免责声明:以下代码是aproximation,我还没有对此进行过测试,因此无法完全按照这种方式运行。

df['C'] = df['A'] + df['B']