【发布时间】:2012-12-26 04:23:57
【问题描述】:
我在我的项目中使用django-simple-ratings。我将ratings 连接到我的Post 应用程序,因此用户可以投票赞成/反对,然后按分数排序。我想要的几乎都包含在ratings 应用程序中。有这个页面我需要列出所有Post(就像stackoverflow)。但是对于我显示评级的Post 中的每个post,它都会访问数据库,这会使网站变得很慢。模型.py:
from ratings.models import Ratings, RatedItemBase
class PostRatings(RatedItemBase):
content_object = models.ForeignKey('Post')
class Post(models.Model):
title = models.CharField(max_length = 200)
content = models.TextField()
ratings = Ratings(PostRatings)
for q in Post.objects.all():
print q.ratings.cumulative_score()
#or
print q.postratings_set.aggregate(Sum('score'))['score__sum']
对于每个循环,它都会命中数据库,再试一次:
for q in Post.objects.prefetch_related('postratings_set'):
print q.postratings_set.aggregate(Sum('score'))['score__sum']
仍然为每个循环访问数据库。
你们中有人有同样的问题吗?你是怎么解决的?或者我应该改用另一个评分应用程序吗?谢谢。
【问题讨论】:
-
你解决过这个问题吗?感谢分享
标签: python django django-ratings