2013-08-30 2 views
0

Я создаю простое приложение для создания списка. 1 таблица с описанием и 1 статусом ', где каждый элемент может быть либо неполным, либо полным.Дублирующее значение в раскрывающемся списке

У меня есть следующий в моем шаблоне HTML:

<h1> To do list </h1><br> 
{% if itemlist %} 
    {% for desc in itemlist %} 
     <li>{{desc}}<select> 
         {% for status in statuslist %} 
         <option value="{{status.id}}">{{status}}</option> 
         {% endfor %} 
         <option selected>{{desc.status}}</option> 

        </select> 
     </li> 
    {% endfor %} 
{% else %} 
    <p> No Items Found </p> 
{% endif %} 

Моей проблемы заключается в заполнении выпадающего списка с обоими значениями и автоматически показывающее значение, содержащимся в базе данных. С моим текущим кодом значение, которое проводится показывается правильно, но он дублируется в выпадающем списке, так что показывает либо:

'incomplete' 
'complete' 
'incomplete' 

или

'incomplete' 
'complete' 
'complete' 

вместо

'incomplete' 
'complete' 

Я попытался добавить selected="{{desc.status}}" в тег <option>, но он заполняет каждый элемент значением первого. Как изменить это, чтобы отразить то, что я хочу видеть?

+0

Я использовал 'statuslist = status.objects.distinct()' вместо 'statuslist = status.objects.all()', но он вернулся тем же. Значения не дублируются в таблице состояний, которые они дублируют только в раскрывающемся списке; Я думаю, что есть проблема с моим синтаксисом в шаблоне? В конечном итоге я буду использовать форму, чтобы отправить результаты обратно в db. –

+0

См. Ответ @Nikhil Doomra. Это решит вашу проблему. –

ответ

2

Попробуйте следующий код:

<h1> To do list </h1><br> 
{% if itemlist %} 
    {% for desc in itemlist %} 
     <li>{{desc}}<select> 
         {% for status in statuslist %} 
          {% if status==desc.status %} 
           <option value="{{status.id}}" selected>{{status}}</option> 
          {% else %} 
           <option value="{{status.id}}">{{status}}</option> 
          {% endif %} 
         {% endfor %} 
        </select> 
     </li> 
    {% endfor %} 
{% else %} 
    <p> No Items Found </p> 
{% endif %} 
+0

Это частично сработало: я использовал '{% ifequal status desc.status%}' вместо равенства, которое запустило ошибку 'Could not parse the else'. –

+0

На самом деле я не знал синтаксиса .. Я мог бы сказать, посмотрев на вашу логику :) –