2015-08-04 5 views
0

Как изменить для цикла игнорировать дубликаты mealtype == 'Entrees'Изменить Джанго-шаблон, если заявление игнорировать дубликаты

мне это нужно только создать 1 <a href>

{% for menu in menus %} 
      {% if menu.mealtype == 'Entrees' %} 
      <li role="presentation"> 
       <a href="#tab1" aria-controls="tab1" role="tab" data-toggle="tab">Entrees</a> 
      </li> 
      {% endif %} 
{% endfor %} 

полный Li

{% for menu in menus %} 
    {% if menu.show_presentation %} 
    <li role="presentation"> 
     <a href="#tab1" aria-controls="tab1" role="tab" data-toggle="tab">Entrees</a> 
    </li> 
    {% endif %} 

    {% if menu.show_presentation %} 
    <li role="presentation"> 
     <a href="#tab2" aria-controls="tab2" role="tab" data-toggle="tab">Sides</a> 
    </li> 
    {% endif %} 

    {% if menu.show_presentation %} 
    <li role="presentation"> 
     <a href="#tab3" aria-controls="tab3" role="tab" data-toggle="tab">Mains</a> 
    </li> 
    {% endif %} 

    {% if menu.show_presentation %} 
    <li role="presentation"> 
     <a href="#tab4" aria-controls="tab4" role="tab" data-toggle="tab">Drinks</a> 
    </li> 
    {% endif %} 

    {% if menu.show_presentation %} 
    <li role="presentation"> 
     <a href="#tab5" aria-controls="tab2" role="tab" data-toggle="tab">Desserts</a> 
    </li> 
    {% endif %} 

    {% if menu.show_presentation %} 
    <li role="presentation"> 
     <a href="#tab6" aria-controls="tab3" role="tab" data-toggle="tab">Specials</a> 
    </li> 
    {% endif %} 

    {% if menu.show_presentation %} 
    <li role="presentation"> 
     <a href="#tab7" aria-controls="tab4" role="tab" data-toggle="tab">Others</a> 
    </li> 
    {% endif %} 
{% endfor %} 

ответ

1

Обновление для просмотра на основе комментариев. Попробуйте это:

show_presentation_list = [] 
menus_presentation = [] 

for menu in menus: 
    if menu.mealtype and menu.mealtype not in show_presentation_list: 
     show_presentation_list.append(menu.mealtype) 
     menus_presentation.append(menu) 

Кроме того, ваш новый шаблон, попробуйте следующее:

{% for menu in menus_presentation %} 
    <li role="presentation"> 
      <a href="#tab{{forloop.counter}}" aria-controls="tab{{forloop.counter}}" role="tab" data-toggle="tab">{{menu.mealtype}}</a> 
    </li> 
{% endfor %} 
+0

Спасибо. Получил его, чтобы игнорировать все дубликаты. У меня есть другие типы еды - Entrees, side, mains и т. Д. Проблема, которую я сейчас имею, даже если нет входа в этот конкретный тип еды, она все еще показывает ли. Я попытался с 'для меню в меню: если menu.mealtype является None: menu.show_presentation = False Элиф menu.mealtype ==«Entrees»или«стороны»или«Сеть»или«Напитки»или" Десерты или «Специальные» или «Другие»: menu.show_presentation = True break' но, похоже, не работает –

+0

Не понимаю. Вы хотите показать li для каждого приема пищи один раз (и удалить дубликаты) или только для Entrees? –

+0

Я только что добавил свой полный ли. В настоящее время один раз демонстрирует каждый прием пищи и удаляет дубликаты. Тем не менее, я бы хотел, чтобы li вообще не отображался, если он пуст –