python django中的filter()方法

时间:2012-06-01 14:49:20

标签: python django django-views

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.idlink['id']?我的python说[ ],但django不起作用。

3 个答案:

答案 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,这也恰好是一个可迭代的。