首先,很抱歉,如果這不是StackOverflow的適當問題。我儘量使其儘可能通用。爲用戶/積分系統設計數據庫? (在Django中)
我想創建一個擁有用戶的數據庫(MySQL,網站運行Django),可以爲各種類型的操作分配一定數量的點 - 這是一個協作遊戲。我的要求是獲得:
- 點的數量的用戶有
- 用戶與所有其他用戶
- 和總排行榜(即所有用戶排名分先後)
這是我到目前爲止,我的Django的models.py文件:
class SiteUser(models.Model):
name = models.CharField(max_length=250)
email = models.EmailField(max_length=250)
date_added = models.DateTimeField(auto_now_add=True)
def points_total(self):
points_added = PointsAdded.objects.filter(user=self)
points_total = 0
for point in points_added:
points_total += point.points
return points_total
class PointsAdded(models.Model):
user = models.ForeignKey('SiteUser')
action = models.ForeignKey('Action')
date_added = models.DateTimeField(auto_now_add=True)
def points(self):
points = Action.objects.filter(action=self.action)
return points
class Action(models.Model):
points = models.IntegerField()
action = models.CharField(max_length=36)
然而,它的迅速b這對我來說很清楚,它確實相當複雜(至少在Django查詢條件下)來確定用戶的排名並返回用戶的排行榜。至少,我發現它很艱難。有沒有更優雅的方式來做這樣的事情?
This question似乎表明我甚至不應該有一個單獨的積分表 - 人們會怎麼想?有單獨的表格感覺更健壯,但我沒有太多的數據庫設計經驗。