您好我希望将ForeignKey关系限制为具体数字 可以说篮球队只能有12个人。
class Team(models.Model):
teamName = models.CharField(max_length = 20)
teamColors = models.CharField(max_length = 20)
... <and so forth>
class Player(models.Models):
team = models.ForeignKey(Team, **)
name = models.CharField(max_length = 20)
heightInches = models.IntegerField()
... <and so forth>
**这里有一个选项可以限制每队最多12名球员吗?
有任何额外的创建python错误吗?
答案 0 :(得分:4)
没有直接的方法来限制ForeignKey定义中团队中的玩家数量。但是,这可以通过与您的模型一起使用来完成。
一种选择是在Team上创建一个方法,例如:
def add_player(self, player):
if self.player_set.count() >= 12:
raise Exception("Too many players on this team")
self.player_set.add(player)
然后你想要总是通过这种方法添加玩家。
答案 1 :(得分:0)
我认为另一种选择是像这样覆盖Player模型上的save方法:
class Player(models.Models):
team = models.ForeignKey(Team, **)
name = models.CharField(max_length = 20)
heightInches = models.IntegerField()
... <and so forth>
def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
if self.player_set.count() < 12:
super(Player, self).save()
else:
raise Exception(f'{self.team.teamName} has already 12 players. No more are allowed.')