我正在做一个项目,它需要一个评级系统,在这个系统中,他们可以对房屋的质量进行评级。他们会在管理面板上做这件事,所以它不是访问者会评价的东西。
例如,对于每个列表,他们可以对其进行1-5星的评分:位置:房间:餐饮选项:社区:总体:
在我的models.py文件中,我有这样的设置:
Class Listing (models.Model):
...
RATING_CHOICES = (
(1, 1),
(2, 2),
(3, 3),
(4, 4),
(5, 5),
)
location_rating = models.DecimalField(choices = RATING_CHOICES, max_digits=3, decimal_places=2)
room_rating = models.DecimalField(choices = RATING_CHOICES, max_digits=3, decimal_places=2)
dining_options_rating = models.DecimalField(choices = RATING_CHOICES, max_digits=3, decimal_places=2)
community_rating = models.DecimalField(choices = RATING_CHOICES, max_digits=3, decimal_places=2)
recreation_rooms_rating = models.DecimalField(choices = RATING_CHOICES, max_digits=3, decimal_places=2)
def __unicode__(self):
return self.name
def get_avg_rating(self):
avg_rating = (self.location_rating + self.room_rating + self.recreation_rooms_rating + self.dining_options_rating + self.community_rating) / 5
return avg_rating
我打算用一个小CSS来显示评分。仅仅将room_rating或avg_rating放在模板标记中是行不通的,所以我假设我必须在views.py中添加一些代码行。我已经检查了Django文档,但我仍然不确定该如何处理。
这看起来应该很容易做,但我真的不确定从哪里开始。
发布于 2011-02-10 04:29:51
你所采取的方向的一个潜在问题是,你只为每个列表存储了一组评级。如果用户B想要对列表进行评级,他必须覆盖用户A的评级。您需要将您的评级分解到一个单独的评价表中,并在您的列表和评级之间使用ManytoMany关系,而不是将评级放在列表中。这样,您可以让多个用户对特定列表进行评分,然后您可以计算并显示每个列表的平均值。有关参考,请参阅this discussion。
使用现有的评级应用程序可能比从头开始更好。他们已经有了文档,所以您可以快速启动和运行它们,并且他们会为您处理数据库设计。
https://stackoverflow.com/questions/4952697
复制相似问题