out_links = Link.objects.filter(iweb=iweb_id).order_by('-pub_date')
for link in out_links:
comments = LinkComment.objects.filter(link=link.id)
Filter方法创建对象列表,所以out_links是一个列表,对吗?
接下来,在for循环之后,我再次过滤以通过链接ID在LinkComments类中查找对象。
问题出现了,我应该把链接称为对象,而不是列表?
只要它是django的观点,我不是很害羞吗? link.id
或link['id']
?我的python说[ ]
,但django不起作用。
答案 0 :(得分:3)
out_links是一个查询集,在for循环中,您可以通过以下方式访问所有LinkComments:
for link in out_links:
comments = link.linkcomment_set.all()
答案 1 :(得分:1)
过滤器创建一个QuerySet,如文档中所述:https://docs.djangoproject.com/en/dev/ref/models/querysets/#methods-that-return-new-querysets
如果你下标一个QuerySet,比如comments[n]
,你得到第n个成员(就像你对列表一样)。如果您有order_by,那就是该子句指定的顺序。您无法使用下标符号按ID进行查询。
当您遍历QuerySet时,您将获得查询集的成员,这些成员是python模型对象,您可以像处理代码中的任何其他对象一样对待它们。
答案 2 :(得分:0)
Filter方法创建对象列表,因此out_links是一个列表, 对吗?
错误。它创建QuerySet object,这也恰好是一个可迭代的。