排除Django Query中注释项的计数

时间:2012-01-30 04:19:39

标签: python django

我正在查询数据库以获取对象列表,并使用annotate()来计算它们与之相关的项目数。

我只想返回关联item计数超过5的对象。

lists = List.objects.exclude(picture_url='').exclude(picture_url__icontains='google').select_related('city','city__country', 'user', 'user__profile').annotate(items_added=Count('item'))[:10]

1 个答案:

答案 0 :(得分:4)

lists = List.objects.exclude(picture_url='') \
        .exclude(picture_url__icontains='google') \
        .select_related('city','city__country', 'user', 'user__profile') \
        .annotate(items_added=Count('item')) \
        .filter(items_added__gt=5)[:10]
  

与aggregate()不同,annotate()不是终结子句。的输出   annotate()子句是一个QuerySet;可以修改此QuerySet   使用任何其他QuerySet操作,包括filter(),order_by或   甚至额外调用annotate()。