python - 在 Django 中访问查询集数据并对其执行操作

标签 python django

如果我得到如下所示的查询集对象

review_object = Review.objects.filter(property_id=prop.values('id')).annotate(total=Sum('star_rating'))

如何访问该对象以执行进一步的操作?为了扩展,我需要能够对每个 property_id 的“star_ rating”字段进行求和。我试过这个:

count_stars = 0
    for ro in review_object:
        count_stars += ro.star_rating

但这会显示所有属性的所有星星。

我尝试了聚合函数,但是这返回了一个字典对象,该对象在模板中渲染时不满足我的需求。如果需要,我可以提供更多信息。

有什么建议吗?

最佳答案

如果您想使用 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

希望有帮助。

关于python - 在 Django 中访问查询集数据并对其执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22992354/

相关文章:

python - 来自 werkzeug 的 Run_simple dev Web 服务器不使用 Windows 下的重新加载程序运行

java - Java中的@override和Python中的@decorator的区别

python - 如何从 python 中的 JSON 对象中删除带有值的空键?

python - 正则表达式中的括号是什么意思?

python - 如何将文本文件中的某些单词大写?

python - 如何在TensorFlow中实现2-D高斯滤波器(如scipy.ndimage.gaussian_filter)?

python - matplotlib 中的堆栈条形图并为每个部分添加标签

python - Django休息框架: Display object only for specific choice

python - Nginx、Uwsgi、Django 问题

python - 在 Dreamhost 上调试 Django/Python