2014-08-31 4 views
0

이것은 내 모델입니다. 한 줄에 manytomany django를 역순으로 필터링 하시겠습니까?

class League(models.Model): 
    league_name=models.CharField(max_length=20) 
    league_id=models.IntegerField() 

class LeagueAdministrator(models.Model): 
    administrator = models.ManyToManyField(User) 
    league = models.ManyToManyField('League') 

는 리그 하나 이상의 관리자가 될 수 있음을 감안할 때 : 나는 특정 리그의 administator있는 모든 사용자 개체로 설정 쿼리를 반환하는 단일 쿼리를 원한다. 이것이 내가 지금하는 일이다.

league=League.objects.get(league_id=1) 
usersids=LeagueAdministrator.objects.filter(league=league).values_list('administrator') 
Administrators=User.objects.filter(id__in=usersids) 

감사합니다.

+0

나는 모델 구조를 잘 생각하지 않는다 : 나는 의심 * 아주 * 많이 양쪽에 ManyToManys와 LeagueAdminstrator 클래스가 필요합니다. 오히려 LeagueAdministrator는 * ForeignKey *를 사용하여 다 대 다 관계의 연결 테이블 그 자체입니다. –

+0

나는 그것을 얻지 못한다 : 많은 리그와 많은 리그에서 플레이 할 수있는 사용자가 있다면 어떨까요? 내가 다 대다가 아니라 외래 키만 쓸 필요가 있다고 말하면, 다 대 다 분야가 필요할 것입니다. (내 모델에 연결된 예제가 마음에 들면) – foebu

+0

하지만 내 포인트는 * 다 대 다다. 다 대다 관계는 양쪽에 외래 키가있는 연결 테이블을 가지고 있습니다. Django ManyToManyField는 해당 테이블을 생성하고 조인에 액세스하는 Pythonic 방식을 만듭니다. 귀하의 경우, 리그와 사용자의 각 조합에 여러 명의 리그 관리자가 있어야합니다. 이는 합리적인 말이 아닙니다. 많은 팀을 관리 할 수있는 팀원이라도 각 팀의 관리자가 될 수 있으며 각 팀마다 여러 관리자. –

답변

0

당신은 이런 식으로 뭔가를 시도 할 수 있습니다 :

administrators = User.objects.filter(leagueadministrator__league__id=1).distinct() 

Documentation here

관련 문제