2016-06-14 4 views
0

車のデータがあり、それらをブートストラップリストグループに表示します。問題は、1台の車のブランドをに一度しか表示しないことです。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に車を一覧表示する追加:http://www.bootply.com/XEnAquIInD

、NOT LIKE:

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

ので、この例では、私はそれがブートストラップリスト・グループで、次のように示されたいですこれは: http://www.bootply.com/2YX7PgB1ch

問題はDjangoのテンプレートで私に来る。私はテンプレートの車をループするときに、リスト項目のHTMLに異なるデータの親のIDを持つ必要があります。また、どのように私が確認することができます、1つ以上の車のブランドが表示されていることはありません?私はあなたのビューのデータをクリーンアップするために、このような何かをするだろう

<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

2つのリストを作成する必要があります。 1つは車用、もう1つはID用です:s? – MMakela

+0

番号です。データの出所は部分的に異なります。ソースに固有のID(データベースIDなど)を持っていますか?そうでない場合は、車名のような固有のフィールドを(s​​lug)(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

関連する問題