评论和内容对象

时间:2010-08-16 06:35:17

标签: django comments

我正在试图找出其工作原理:

>>> 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”都是一个Comment实例。那么为什么c在第一种情况下有一个content_object属性而在第二种情况下没有?感谢。

1 个答案:

答案 0 :(得分:6)

不,在这两种情况下,您都会获得一个查询集。在第一个中,您遍历并获取查询集中每个项目的content_object - 但在第二个中,您尝试在整个查询集上调用它,由于某种原因。如果你以与第一个相同的方式迭代第二个,那就可以了。

或者,这可能是你真正想做的事情,你可以使用:

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

获取ID为111的实际Comment对象,而不是由一个元素组成的查询集。