浏览代码

Add statistics mixin

Colin Powell 3 年之前
父节点
当前提交
df48fe1bd4
共有 1 个文件被更改,包括 16 次插入4 次删除
  1. 16 4
      games/models.py

+ 16 - 4
games/models.py

@@ -53,22 +53,34 @@ class BaseModel(TimeStampedModel):
         return self.name
 
 
-class Genre(BaseModel):
+class StatisticsMixin(models.Model):
+    class Meta:
+        abstract = True
+
+    @property
+    def rating_avg(self):
+        avg = self.game_set.aggregate(models.Avg("rating"))["rating__avg"]
+        if avg:
+            return int(100 * avg)
+        return 0
+
+
+class Genre(BaseModel, StatisticsMixin):
     def get_absolute_url(self):
         return reverse("games:genre_detail", args=[self.slug])
 
 
-class Publisher(BaseModel):
+class Publisher(BaseModel, StatisticsMixin):
     def get_absolute_url(self):
         return reverse("games:publisher_detail", args=[self.slug])
 
 
-class Developer(BaseModel):
+class Developer(BaseModel, StatisticsMixin):
     def get_absolute_url(self):
         return reverse("games:developer_detail", args=[self.slug])
 
 
-class GameSystem(BaseModel):
+class GameSystem(BaseModel, StatisticsMixin):
     retropie_slug = models.CharField(
         blank=True,
         null=True,