2011-03-28 4 views
1

현재 ManyToMany 관계가 많은 앱을 개발 중이며 (궁극적으로 더 많은 기능을 제공 할 것입니다.) 영리한 방법을 생각하려고합니다. 올바른 방법) ORM에 정확하게 조인 된 데이터를 쿼리합니다.Django, ManyToMany 사용자와의 스마트 한 쿼리

다음은 내가 갖고있는 것의 견본이며 내가해야 할 일이 있습니다. 의사 코드에 사과드립니다. 내가 쿼리 원하는 이제 어떻게

ProjectModel: 
    owner = ForeignKey(User) #just one user 
    people = ManyToMany(User) #multiple users and theoretically can also contain the owner 

은 현재 사용자가 소유 한 프로젝트에서 "사람"입니다 모든 사용자의 목록입니다.

나는 이것을 수행하는 방법을 알지 못합니다. __contains는 실제로이 용도에 적합하지 않은 것 같습니다 ... 그래서 내 옵션은 기본적으로 모든 프로젝트를 쿼리하고 반복 작업을 수행하는 것입니다. 그러나 ORM/SQL을 통해이를 얻는 방법을 알고 있다면 훨씬 더 풍부해질 것입니다.

감사합니다. 이 m2ms 많이, 그리고 당신이 당신의 people 필드에 related_name를 정의했다면

답변

7
# users in projects owned by request.user 
users = User.objects.filter(projectmodel__owner=request.user).distinct() 

, 그건 당신이 당신의 역방향 조회 대신 projectmodel에 사용하는 것이거야.

+1

브릴리언트. 능숙하게 끝냈다. 그게 바로 제가 찾던 것입니다. 일하는 것 같습니다. –

관련 문제