2016-06-14 62 views
0

我有汽車數據,我希望它們在引導列表組中顯示。問題是我想要一個汽車品牌只能顯示一次。在Django模板的引導列表組中顯示數據

{u'cars': [{u'brand': u'Ford', u'model': u'Focus'}, {u'brand': u'u'Ford', u'model': u'Fiesta'}, {u'brand': u'u'Toyota', u'model': u'Hilux'}] 

我追加列出車views.py:

for i in readable_json["cars"]: 
      cars.append({ 
       'brand': i['brand'], 
       'model': i['model'], 
       }) 

因此,在這個例子中,我想這是這個樣子的引導列表組:http://www.bootply.com/XEnAquIInD

NOT LIKE本文: http://www.bootply.com/2YX7PgB1ch

問題在於我在Django模板中。當我使用模板循環汽車時,我需要在HTML中爲列表項目設置不同的數據父項ID。另外,我如何檢查,顯示的車型品牌不超過一次?

<div id="MainMenu"> 
     <div class="list-group panel"> 
      <div href="#demo" class="list-group-item list-group-item-success" data-parent="#MainMenu">Laitteet</div> 
      <div class="collapse in" id="demo"> 

      {% for car in cars %} 

      <a href="#{{ ??? }}" class="list-group-item" data-toggle="collapse" data-parent="#{{ ??? }}">{{ car.brand }} <i class="fa fa-caret-down"></i></a> 

      <div class="collapse list-group-submenu" id="{{ ??? }}"> 
       <a href="#" class="list-group-item" data-parent="#{{ ??? }}">{{ car.model }}</a> 
      </div> 
     {% endfor %} 
     </div> 
    </div> 
</div> 
+2

你不應該這樣做的邏輯就像在模板檢查的獨特性 - 你需要做的是,在你看來和之前過濾數據它傳遞給模板。添加一個唯一的ID然後變得簡單。 – solarissmoke

+0

我應該做兩個清單;一個用於汽車,一個用於ID:s? – MMakela

+0

不是。它部分取決於您的數據來自哪裏 - 它是否具有唯一的源ID(例如數據庫ID?)。如果沒有,你可以[slugify](https://docs.djangoproject.com/en/1.9/ref/utils/#django.utils.text.slugify)一個獨特的領域,如汽車名稱。 – solarissmoke

回答

0

我會做這樣的事情來清理你的視圖中的數據:

cars_seen = set() 
for i in readable_json["cars"]: 
    car_identifier = '{}-{}'.format(i['brand'], i['model']) 
    if not car_identifier in cars_seen: 
     cars.append({ 
      'brand': i['brand'], 
      'model': i['model'], 
      'id': car_identifier, 
     }) 
    cars_seen.add(car_identifier) 

cars現在將包含的獨特汽車(假設brand + model是如何定義的唯一性)的列表。

在模板中,你可以再生成唯一ID的東西,如:

<a href="#{{ car.car_identifier|slugify }}">...</a> 
+0

仍然汽車列表可能有多次相同的品牌名稱,如:http://www.bootply.com/2YX7PgB1ch,所以標識符不工作應該。 – MMakela

+0

是的 - 如果你按照我的代碼說明了這一點。您不會在這裏獲得現成的解決方案,並需要了解基礎邏輯,以便您可以自己實施它。 – solarissmoke