我正在开展一个需要评级系统的项目,他们可以评估房屋的质量。他们是从管理面板上做的,所以这不是访问者评价的内容。
例如,对于每个商家信息,他们可以从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文档,但我仍然不确定如何解决这个问题。
这似乎应该很容易做到,但我不确定从哪里开始。
答案 0 :(得分:1)
您所采取的方向的一个潜在问题是您只为每个清单存储一组评级。如果用户B想要对列表进行评级,他将不得不覆盖用户A的评级。您不需要将评级放在列表中,而是需要将评级分成单独的评级表,并在您的列表和评级之间使用ManytoMany关系。这样,您可以让多个用户对特定列表进行评级,然后您可以计算并显示每个列表的平均值。请参阅this discussion以供参考。
使用现有的评级应用可能比从头开始更好。他们已经拥有文档,因此您可以快速启动并运行它们,并为您处理数据库设计。