プロジェクトでdjango-simple-ratingsを使用しています。ratings
を自分のアプリにフックして、Post
ユーザーが上下に投票し、スコアで並べ替えることができるようにします。私が欲しいものはほとんどratings
アプリに含まれています。すべてをリストする必要があるこのページがありますPost
(ちょうどstackoverflowのように)。しかし、評価を表示するたびpost
にPost
、データベースにヒットし、サイトが非常に遅くなります。models.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']
ループごとにデータベースをヒットします。
同じ問題を抱えている方はいますか?どのように解決しましたか?または、別の評価アプリに変更する必要がありますか? ありがとうございました。