2011-08-13 1 views
0

테이블 'Comments'이 있고 내부 필드 'user'는 프로필 같은 쿼리에 추가로 나타납니다. 현재 나는 그Django ORM JOIN의

comments = models.Comment.objects.select_related('author__profile').filter(post=article) 

같은 불행하게도 내가 프로필에 대한 정보를 검색 할 수 있고,이 같은 좋은 보이게하는 난 단지

comment.author._profile_set_cache 

어떤 아이디어를 통해받을 수 있나요?

답변

0

'작성자'가 contrib.auth 사용자 모델의 사용자 인 경우 UserProfile에 FK가 없습니다. 그것은 "역 일대일"입니다. 다행히, 장고는 "select_related"을 사용하여 역 일대일를 탐색 할 수 있습니다, 그래서 실제로 필드를 검색하는 쿼리 (당신은 사용자의 프로파일을 얻을 수

print models.Comment.objects.select_related('author__profile').filter(post=article).query 

방법을 사용하여 확인할 수 있습니다 get_profile() 방법입니다 :

print comment.author.get_profile() 

프로파일 데이터가 이미합니다 (_profile_set_cache가있다 그 이유는) 캐시로 개체를 얻는 것은 추가 쿼리를 의미

+0

좋아, 덕분에 내 친구가 프로필 호소했다.. OneToOneField가 아닌 ForeignKey에 의해;/t를 변경 한 후 그는 OneToOneField가 완벽하게 작동합니다. – darkus