Как ограничить выбор отношения "многие ко многим"?

Я использую 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 ответ

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

Другие вопросы по тегам