【发布时间】:2014-11-05 14:56:45
【问题描述】:
我是 Django(和一般的 Python)新手,并且有一个模型验证问题。
我有 2 个模型,团队和游戏。 2支球队参加比赛,获胜者字段可以为空白/空:
class Team(models.Model):
abbreviation = models.CharField(max_length=5, unique=True)
location = models.CharField(max_length=100)
nickname = models.CharField(max_length=100)
class Game(models.Model):
away_team = models.ForeignKey(Team, related_name='away_games')
away_score = models.PositiveSmallIntegerField(blank=True, null=True)
home_team = models.ForeignKey(Team, related_name='home_games')
home_score = models.PositiveSmallIntegerField(blank=True, null=True)
week = models.PositiveSmallIntegerField(validators=[MaxValueValidator(21)])
winner = models.ForeignKey(Team, blank=True, null=True)
def check_winner_played(self):
if not (winner and (winner.id == away_team.id or winner.id == home_team.id)):
# raise error("Winner did not compete")
我需要确保获胜者是 away_team 或 home_team,而不仅仅是任何团队。我创建了check_winner_played 方法,但我不知道如何在.save() 上调用它。这只会在管理部分,所以我认为我不应该使用表单验证。在我看来,验证似乎应该在模型级别完成。
另外,如果这里有任何事情让你停下来说“这家伙不知道他在做什么。”让我知道。寻找我能得到的任何指示。具体来说,我是否正确验证了week IntegerField 最大值?
【问题讨论】:
标签: python django validation model