【发布时间】:2017-06-17 21:14:54
【问题描述】:
我无法确定在我的 Django 项目中放置控制器逻辑的位置。
我有根据 ELO 分数评分的玩家模型(像棋手一样思考)。一轮后,两名玩家的 ELO 分数会被修改和更新。接下来的比赛是根据迄今为止参加比赛次数最少的玩家来选择的。
class Player(models.Model):
tournament_class = models.ForeignKey(Topic, on_delete=models.CASCADE) # each player is part of a single tournament class
name = models.CharField(max_length=200)
contests = models.IntegerField(default=0)
last_contest = models.IntegerField(default=0) # round number of last contest participated in
ELO = models.FloatField(default=1000) # current ELO ranking
我应该把如下函数的控制逻辑放在哪里?
def select_candidates()
# return candidates who have participated in the least number of contests
def update_ELO_scores (winner,loser)
# updates ELO scores based on match results
根据我的阅读,我认为我想编写的这些函数不应该存在于模型中,因为这些函数与单个对象实例无关。它们可能属于自定义管理器,因为它们在 QuerySet 上工作,或者它们属于 QuerySet 管理器还是单独的包(python 文件)?
【问题讨论】:
标签: django django-models