我有一些Django模型,看起来像这样(这不是我的确切代码,而是一个结构相同的简单示例):
class Player(models.Model):
# Some fields here.
pass
class Team(models.Model):
players = models.ManyToManyField(Player, through='TeamPlayer')
class TeamPlayer(models.Model):
team = models.ForeignKey(Team)
player = models.ForeignKey(Player)
some_other_field = models.BooleanField()
我使用through
机制,因为我的链接表上有额外的列。在
我的管理类如下所示(请注意,我使用内联管理来添加播放器):
^{pr2}$问题:我的问题是,在我的管理中,我想确认一个团队有11名球员。任何少的都会导致错误。我该怎么做?在
以下是我尝试过的方法以及它们失败的原因:
验证Team
模型的clean
方法中的玩家数量。这不起作用,因为玩家还没有被保存,所以对于一个新的物体,玩家总是为零。
验证TeamAdmin
使用的clean_players
方法中的数字。此方法永远不会被调用。其他非manytomy字段的类似方法也会被调用。
验证上述ModelForm
的clean
方法中的数字。调用此方法,但self.cleaned_data
字典没有'players'
的条目。
有什么想法我可以实现这种类型的验证吗?我还远没有成为一个Django专家,所以不要以为我做了所有应该显而易见的事情。在
您需要在teamplayerline上设置
formset
。并重写该表单集中的clean方法。例如:相关问题 更多 >
编程相关推荐