2016-09-01 4 views
0

각 조건부 최대 장고 : 같은 행에있는 그들의 최신 (예 : Max('created_at')) 책, 내가 모든 저자를 조회 할다음 모델 고려 외래 키

class Author(models.Model): 
    name = models.CharField(max_length=200) 

class Book(models.Model): 
    author = models.ForigenKey(Author) 
    name = models.CharField(max_length=200) 
    created_at = models.DateTimeField(auto_now_add=True) 
    active = models.BooleanField(default=True) 

를하지만, 경우에만 책은 active=True입니다.
전체 관련 도서 개체 - 최대 날짜가 아님.
이러한 책이없는 경우 (모두 활성 = 거짓이거나 단순히 존재하지 않는 경우) 검색어는 책 대신에 NULL을 출력해야합니다.

나는 이런 식으로 뭔가 쓰는 시도했다 : (작업을 수행

Author.objects.annotate(max_book_date=Max('book')) 

을하지만,이 책에 추가 필드를 실종, 그리고 내가이 null의 경우 어떻게 작동하는지 모르겠어요 즉, 어떤 책), 그리고 active=True 조건이없는 .. 모든

답변

-1

첫째, 당신은 책 모델에 저자 FK 필드에 related_name의 PARAM을 정의해야합니다 : 다음

author = models.ForeignKey(Author, related_name='libro') 

, 당신이야

Author.objects.filter(libro__active=True).annotate(max_book_date=Max('libro__created_at')).all() 
+0

이것은 나를 위해 충분하지 않습니다. 관련 도서 개체 (이름 및 세부 정보)가 최대 날짜가 필요합니다. BTW 나는 끝에있는 .all() 호출이 뭔가 도움이된다고 생각하지 않습니다. – user3599803