如果我得到如下所示的查询集对象
review_object = Review.objects.filter(property_id=prop.values('id')).annotate(total=Sum('star_rating'))
如何访问此对象以执行进一步操作?为了扩展,我需要能够总结“星级评论”。每个property_id的字段。我试过这个:
count_stars = 0
for ro in review_object:
count_stars += ro.star_rating
但是这会显示所有属性的所有星星。
我已经尝试了聚合函数但是这会返回一个字典对象,在模板中渲染时它不符合我的需要。如果需要,我可以提供更多信息。
有什么建议吗?
答案 0 :(得分:1)
如果您想使用django ORM获取每个属性ID的评级总和,则需要指定values()
:
review_object = Review.objects.values('property_id').annotate(total=Sum('star_rating'))
另一个选择是使用defaultdict总结每个属性的评级“在python中”:
from collections import defaultdict
review_object = Review.objects.all()
results = defaultdict(int)
for ro in review_object:
results[ro.property_id] += ro.star_rating
希望有所帮助。