2014-02-25 3 views
7



모델 :Django의 ORM을 사용하여 복잡한 필터를 만들고 싶습니다. 적어도 하나의 값을 가진 many-to-many 속성을 가진 장고 필터 객체

class Book(models.Model): 
    title = models.TextField() 
    bestseller = models.BooleanField(default=False) 

class Author(models.Model): 
    name = models.TextField() 
    books = models.ManytoManyField(Book) 

나는 적어도 하나의 베스트셀러 책이있는 모든 저자를 조회 할 어떻게?

검색어 :

best_authors = Author.objects.filter(<relevant filter>) 




편집 : documentation에 따르면이
다음 작동합니다 :

best_authors = Author.objects.filter(books__bestseller=True) 

불행하게도 반복되는 저자 객체 (각 베스트 셀러 도서에 대한 동일한 저자, 반복해서)를 반환합니다.

답변

5
best_authors = Author.objects.filter(books__bestseller=True).distinct() 

filter()Books 테이블과 JOIN을 수행하고 어디 bestseller==True 모든 행을 생성합니다. distinct()은 각 저자가 결과에 한 번만 표시되도록합니다.