2010-08-16 2 views
1

나는이 작품 이유를 알아 내려고 노력 해요 :댓글과 content_object

>>> comments = Comment.objects.all() 
>>>[c.content_object for c in comments] 

를 [코멘트가 부착 된 개체의 목록을 반환]하지만이되지 않습니다 :

>>> c = Comment.objects.filter(id=111) 
>>> c 

[<Comment: Related object name here ...>] 
>>> c.content_object 

Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
AttributeError: 'QuerySet' object has no attribute 'content_object' 

두 경우 모두 각 "c"는 설명 인스턴스입니다. 그렇다면 왜 첫 번째 경우에는 c가 content_object 속성을 갖지만 두 번째 경우에는 그렇지 않습니다. 감사.

답변

6

아니요, 두 경우 모두 쿼리 세트를받습니다. 첫 번째 단계에서는 queryset의 모든 항목에 대해 반복하여 content_object을 얻습니다. 그러나 두 번째 경우에는 어떤 이유로 queryset 전체에서 시도하고 호출합니다. 첫 번째 작업을 수행 할 때와 같은 방법으로 두 번째 작업을 반복한다면 작업이 가능합니다.

또는

, 이것은 당신이 실제로하고 싶었던 것을 아마, 당신은 사용할 수 있습니다

c = Comment.objects.get(id=111) 

오히려 하나 개의 요소로 구성된 검색어 세트보다, ID (111)와 실제 주석 객체를 얻을 수 있습니다.

+0

정확히 올바른 다니엘. 내가 그것을 어떻게 놓쳤는지 명확히하지 않고있다 (그것은 늦었다 :). 그러나 고마워. – shacker

관련 문제