我想做点什么
query.annotate(Count('foreign_model_relation', somefield_from_foreign_model=some_value))
这意味着,我想计算,来自另一个查询集的对象有多少指向此对象。使用像filter(in = other_queryset)这样的东西之间的区别是,我想在一个查询中将它组合起来,以避免为每个对象生成一个查询。
简化型号:
现在我想查询一个组的所有对象的向上/向下计数,包含一个或两个查询,而不是每个对象有一个/两个查询。
答案 0 :(得分:1)
您可以使用两个查询执行此操作:
YourObject.objects.filter(vote__up=True, group=some_group).annotate(total_votes_up=Count('vote'))
YourObject.objects.filter(vote__up=False, group=some_group).annotate(total_votes_down=Count('vote'))
但我认为应该有更多优雅的方式来做到这一点。