我在我的项目中使用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']
仍然为每个循环打分贝。
你们中有人有同样的问题吗?你是怎么解决的?或者我应该改用另一个评分应用程序吗?谢谢你。