2012-06-09 2 views
0

Я использую Python + Django и есть это в моей модели прямо сейчас:Как ограничить выбор отношения между многими?

class Team(models.Model): 
    player = models.ManyToManyField(Player, related_name="player", through="Team_Player") 
    squad = models.ManyToManyField(Player, related_name="squad", blank=True) 

class Player(Person): 
    name = models.CharField(max_length=100) 

class Team_Player(models.Model): 
    team = models.ForeignKey(Team) 
    player = models.ForeignKey(Player) 

Есть ли способ ограничить Team.squad только у игроков внутри Team.player отношений? До сих пор я пытался использовать limit_choices_to. Любые подсказки?

+1

Я думаю, что у вас может быть избыточность с вашей моделью Team_Player. не могли бы вы описать, что вы пытаетесь выполнить? – dm03514

+0

Структура модели кажется довольно грязной. Кроме того, вы можете переопределить метод save() или использовать https://docs.djangoproject.com/en/dev/ref/signals/#django.db.models.signals.pre_save сигнал PRE-SAVE, чтобы проверить, команда имеет только игроков из команды, и для повышения значения ValueError, если это не соответствует. – Tisho

+0

Я считаю, что ваш ищет это: http://stackoverflow.com/questions/4621494/django-limiting-the-number-of-relationships-in-a-onetomany-relationship – Medeiros

ответ

0

Невозможно сделать это в ORM Django. Вам нужно будет реорганизовать ваш дизайн, чтобы команда состояла из отрядов, а команда состоит из игроков; добавьте свойство или метод в модель команды, чтобы получить всех игроков в текущей команде.

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