Комментарии и content_object - PullRequest
       13

Комментарии и content_object

1 голос
/ 16 августа 2010

Я пытаюсь выяснить, почему это работает:

>>> 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 Ответ

6 голосов
/ 16 августа 2010

Нет, в обоих случаях вы получаете набор запросов. В первом случае вы выполняете итерацию и получаете content_object для каждого элемента в наборе запросов, но во втором вы по какой-то причине пытаетесь вызвать его для всего набора запросов. Если вы перебрали второй так же, как и первый, это сработало бы.

В качестве альтернативы, и это, вероятно, то, что вы на самом деле хотели сделать, вы можете использовать:

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

, чтобы получить реальный объект Comment с идентификатором 111, а не набор запросов, состоящий из одного элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...