2011-01-07 2 views
5

Привет, я искал, чтобы ограничить отношение ForeignKey определенным числом.
Допустим, в баскетбольной команде может быть только 12 человек.Django: Ограничение числа отношений в отношениях OnetoMany

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?

ответ

4

Существует нет прямого способа ограничить количество игроков в команде по определению ForeignKey. Однако это можно сделать с небольшой работой с вашей моделью.

Одним из вариантов было бы сделать метод на команды, что-то вроде:

def add_player(self, player): 
    if self.player_set.count() >= 12: 
     raise Exception("Too many players on this team") 

    self.player_set.add(player) 

Тогда вы хотели бы всегда добавлять игроков с помощью этого метода.

Смежные вопросы