我正在试图找出其工作原理:
>>> 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属性而在第二种情况下没有?感谢。
答案 0 :(得分:6)
不,在这两种情况下,您都会获得一个查询集。在第一个中,您遍历并获取查询集中每个项目的content_object
- 但在第二个中,您尝试在整个查询集上调用它,由于某种原因。如果你以与第一个相同的方式迭代第二个,那就可以了。
或者,这可能是你真正想做的事情,你可以使用:
c = Comment.objects.get(id=111)
获取ID为111的实际Comment对象,而不是由一个元素组成的查询集。