2012-06-09 2 views
0

은 파이썬 + 장고를 사용하고 지금 내 모델이 있습니다 해요 :Many to Many 릴레이션의 선택을 제한하는 방법은 무엇입니까?

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

Django ORM에서이를 수행 할 방법이 없습니다. 팀이 분대로 구성되고 분대가 선수로 구성되도록 설계를 리팩토링해야합니다. 팀 모델에 속성이나 메서드를 추가하여 현재 팀의 모든 플레이어를 얻습니다.