2012-01-29 5 views
4

select_related를 사용할 때 누군가가 외래 키 테이블의 필드를 필터링하는 방법을 개발했습니다.Django 필터 Select_Related

는 예를 들어 이러한 모델을 제공 :

class Author(models.Model): 
    first_name = models.CharField(max_length=30) 
    last_name = models.CharField(max_length=40) 

class AuthorExtra(models.Model): 
    author = models.ForeignKey(Author) 
    type = models.ForeignKey(ExtraType) 
    value = models.CharField(max_length = 24) 

나는 특정 유형의 관련 AuthorExtra의 모든 객체를 캐시 할 수있는 방법을 싶습니다.

답변

7

select_related으로는 일대일 필드 또는 ForeignKeys에서만 작동하므로이 작업을 수행 할 수 없습니다. 이와 같은 역관계의 경우, 개발 버전은 정확히 당신이 찾고있는 것입니다 prefetch_related을 도입했습니다.

https://docs.djangoproject.com/en/dev/ref/models/querysets/#prefetch-related

+1

감사합니다. 1.4 베타 버전이 이번 주에 나올 것으로 보이므로 아마 업그레이드 할 것입니다. 문서 에서처럼 미리 가져온 레코드를 필터링하는 내장 된 구현이없는 것처럼 보입니다. – AgDude