我正在查询数据库以获取对象列表,并使用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]
答案 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()。