2011-01-07 13 views
5

Witam szukałem, aby ograniczyć relację ForeignKey do określonej liczby.
Powiedzmy, że w drużynie koszykówki może być tylko 12 osób.Django: Ograniczenie liczby relacji w relacji 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> 

** Czy istnieje opcja ograniczenia do 12 graczy na drużynę?

z dodatkowym tworzeniem błędu Pythona?

Odpowiedz

4

Nie ma bezpośredni sposób, aby ograniczyć liczbę graczy w zespole sprawie definicji ForeignKey. Można to jednak zrobić przy odrobinie pracy z modelem.

Jednym rozwiązaniem byłoby, aby metodę w zespole, coś jak:

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

    self.player_set.add(player) 

Wtedy zawsze chcesz dodać graczy dzięki tej metodzie.

Powiązane problemy