2012-06-01 1 views
-1
out_links = Link.objects.filter(iweb=iweb_id).order_by('-pub_date') 
for link in out_links: 
    comments = LinkComment.objects.filter(link=link.id) 

Метод фильтра создает список объектов, поэтому out_links - это список, не так ли?Метод filter() в python django

Далее, после цикла for, я снова фильтрую, чтобы найти объекты в классе LinkComments по идентификатору ссылки.

Вопрос возникает, хотя, shoud Я ссылаюсь на ссылку, поскольку это был бы объект или, скорее, список? Я не об этом скучаю, так как это вид django? link.id или link['id']? Мой python говорит [ ], но django не работает.

ответ

0

Метод фильтра создает список объектов, поэтому out_links - это список, справа?

Неправильно. Он создает QuerySet object, который также является итерируемым.

3

out_links является QuerySet и в течение цикла вы можете добраться до всех LinkComments по:

for link in out_links: 
    comments = link.linkcomment_set.all() 
+0

Что делать, если я хочу использовать только идентификатор ссылки? – user1403568

+0

Не уверен, что я понимаю ваш вопрос. Можете ли вы разъяснить? – Mikael

+0

У меня есть объект ссылки, взятый из этого набора запросов, внутри него хранится атрибут (id). Я хочу использовать ТОЛЬКО идентификатор из этого объекта ссылки. Шоуд, я делаю это так? 'link.id' или' link ['id'] 'в этом случае – user1403568

1

фильтр создает QuerySet, как описано в документации: https://docs.djangoproject.com/en/dev/ref/models/querysets/#methods-that-return-new-querysets

Если вы индексировать в QuerySet, например, comments[n], вы получаете n-й член (как и со списком). Если у вас есть order_by, то есть в порядке, указанном в этом разделе. Вы не можете запросить идентификатор, используя нотацию индекса.

Когда вы перебираете QuerySet, вы получаете элементы запроса, которые являются объектами модели python, и вы можете обращаться с ними так же, как и в любом другом месте вашего кода.