2011-12-19 5 views
0

I가 다음 코드를 가지고장고 : 필터 외래 키

 query = Entry.objects.all() 
     print 'authors ' + repr([x.id for x in authors]) 
     print 'query ' + repr(query) 
     print 'query ids ' + repr([x.author.id for x in query]) 
     query.filter(author__in=authors) 
     print 'filtered ids ' + repr([x.author.id for x in query]) 

이 출력 :

 authors [2] 
     query [<Entry: test>, <Entry: test>] 
     query ids [2, 3] 
     filtered ids [2, 3] 

물론, 3이 아닌 [2]. 그렇다면 왜 필터링 된 id는 [2, 3]이 아닌 [2]입니까?

감사

+1

Nevermind. .filter()의 결과를 할당하는 것이 더 낫습니다 ... –

답변

3

, 그것은 새로운 검색어 세트를 돌려줍니다. 기존 쿼리 세트는 수정하지 않습니다.

쿼리에 새 쿼리 세트를 할당하면 예상 한 결과를 얻게됩니다.

query = query.filter(author__in=authors) 
print 'filtered ids ' + repr([x.author.id for x in query]) 
1

대신 현재 필터의이 시도 : 당신이 query.filter(author__in=authors)를 호출 할 때

query = query.filter(author__in=authors)