Django-star-ratings:计算不同模型的平均评分

时间:2018-04-08 19:16:04

标签: django

我有两个型号:

class Series(models.Model):
    name = models.CharField(max_length=140)
    slug = models.SlugField(max_length=140, unique=True)

class Issue(models.Model):
    title = models.CharField(max_length=140, blank=True)
    series = models.ForeignKey(Series, on_delete=models.CASCADE)

我正在使用django-star-ratings来允许用户对各个问题进行评分。我希望根据已评级的问题获得该系列的平均评级,但在阅读文档后仍未能提出合适的解决方案。任何帮助或建议将不胜感激!

1 个答案:

答案 0 :(得分:0)

以下是我提出的解决方案:

在系列型号上,我添加了以下内容:

    @property
    def average_rating(self):
        l = []
        for issue in self.issue_set.all():
            l.append(issue.id)

        rating = Rating.objects.filter(object_id__in=l).aggregate(Avg('average'))

        return rating['average__avg']

如果有人有更好的解决方案,请不要羞于分享。