一个简单的,可扩展的评分系统。
django-simple-ratings的Python项目详细描述
一个简单的,可扩展的评分系统。
依赖关系:
再多一点
还有,一个我在里面读到的不同东西的游乐场 programming collective intelligence,托比·塞加兰著。
这些东西存在于utils.py中,如果你想试验(或者 贡献!).
开始
您想将评分添加到某个型号:
from django.db import models from ratings.models import Ratings class Food(models.Model): name = models.CharField(max_length=50) ratings = Ratings()
现在,您可以:
# add ratings to things >>> apple.ratings.rate(user=john, score=1) <RatedItem: apple rated 1 by john> >>> apple.ratings.rate(user=jane, score=5) <RatedItem: apple rated 5 by jane> # get interesting aggregate data >>> apple.ratings.all() [<RatedItem: apple rated 1 by john>, <RatedItem: apple rated 5 by jane>] >>> apple.ratings.cumulative_score() 6 >>> apple.ratings.average_score() 3.0 # order things by their rating >>> Food.ratings.order_by_rating() [<Food: apple>, <Food: orange>]
使用gfks,fks,无论什么
默认情况下,每当向模型添加ratings()时,它都使用rateditem模型 上面有绿色荧光粉。假设你只评了一件事,或者想 有一个明确的数据库约束-这没问题。你可以提供 使用外键而不是gfk的自定义rateditem模型。举个例子 从测试中:
class BeverageRating(RatedItemBase): content_object = models.ForeignKey('Beverage') class Beverage(models.Model): name = models.CharField(max_length=50) ratings = Ratings(BeverageRating) def __unicode__(self): return self.name
api完全相同。