2013-06-02 2 views
0

동물의 쿼리 세트가 있다고 가정하고 다른 모델의 manytomany 필드에 동물 쿼리 세트와 공통된 개체가 하나 이상 있는지 확인하는 쿼리를 작성하려고합니다. 이것이 어떻게 실현 될 수 있습니까?하나의 객체를 공유하는 두 개의 manytomany 관계를 기반으로 쿼리 세트를 필터링하는 방법은 무엇입니까?

farm_animals = Animals.objects.filter(name__in=["Dog", "Cow", "Horse"]) 

print farm_animals # [<Animal: Dog>, <Animal: Cow>, <Animal: Horse>] 

# Returns all people who have at least one farm animal. 
people_with_a_farm_animal = People.objects.filter(???) 

이것은 쉽게 수행 할 수있는 것처럼 보입니다.하지만이를 수행하는 데 효율적인 방법을 찾기 위해 애 쓰고 있습니다. 모든 도움을 미리 감사드립니다.

답변

0

danihp가 지적한 바와 같이 People 개체에 owned_animals 필드가있는 경우 people_with_a_farm_animal = People.objects.filter(owned_animals__in=farm_animals).distinct()을 시도하십시오.

+0

당신은 downvote 행동에 가깝습니다. 이것은 더 나은 접근 방법이지만 해결책은 아닙니다. – danihp

+0

@danihp 어떻게 설명하지 않겠습니까? – 0sh

+1

답변 :'people_with_a_farm_animal = People.objects.filter (owned_animals__in = farm_animals) .distinct()' – danihp

관련 문제