2016-02-19 63 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

非常感謝...今天我學到了一些新東西 –