2016-02-19 78 views
-1

我想从列表中获取对象数据,但它不打印任何东西。如何从django中的列表中获取数据

这里是我的代码:

text = request.GET.get('q') 
    chars = text.split() 

    for tag in chars: 
     brand = Brand.objects.filter(title__icontains=tag) 
     if brand: 
      brand_matches.append(brand) 

    for brand in brand_matches: 
     print brand.title 

,我在下面的格式获取数据:

[[< Brand: Athena>], [< Brand: dp>]] 

下面列表中的每个产品一个品牌对象。但我无法访问它。 我在哪里打印数据出错?谢谢。

+0

您应该添加您得到您的问题任何错误消息。它可以让每个人都更容易帮助你。 – geckon

+0

我在这一个没有得到任何错误...只是不打印任何信息 –

+0

我认为应该有一个例外,因为你在列表中调用一个'title()'方法。虽然列表没有这样的方法。 – geckon

回答

2

这是因为brand_matches是列表的列表,而不是品牌列表。

更好的办法是只列出品牌列表,而不是品牌列表。你可以做到这一点是这样的:

for tag in chars: 
    brand = Brand.objects.filter(title__icontains=tag) 
    if brand: 
     brand_matches.extend(brand) 

for brand in brand_matches: 
    print brand.title 

(我用extend()方法而不是append() - 阅读docs了解详情。)

+0

[0]在这个中做什么? –

+1

访问品牌列表中的第一项。但这不是最好的解决方案。例如,如果'filter()'方法返回多个品牌,它将不起作用。查看编辑。 – geckon

+0

非常感谢...今天我学到了一些新东西 –