评论和内容对象

sha*_*ker 1 django comments

我试图找出其工作原理:

>>> comments = Comment.objects.all() 
>>>[c.content_object for c in comments] 
Run Code Online (Sandbox Code Playgroud)

[返回注释附加到的对象列表]

但这不是:

>>> 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' 
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,每个"c"都是一个Comment实例.那么为什么c在第一种情况下有一个content_object属性而在第二种情况下没有?谢谢.

Dan*_*man 6

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

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

c = Comment.objects.get(id=111)
Run Code Online (Sandbox Code Playgroud)

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