Как получить определенное значение из словаря в шаблоне django?

Здравствуйте.
В шаблон передается словарь типа:
{'1A': ['Name', 'State', 'Name2', 'State2']}
{'2A': ['Name', 'State', 'Name2', 'State2', 'Name3', 'State3', ...]}
В шаблоне таблица, которую нужно заполнить так:
<tr>
    <input type="hidden" name="stud" value="{{ Name }}" />
    <td>{{ Name }}</td>
    <input type="hidden" name="state" value="" class="state"/>
    <td id="editable">{{ State }}</td>
    </tr>

Полностью таблица:
{% for school_class, data in students_data.items %}
        <div id='{{ school_class }}' class="tab-pane fade">
            <form method="post" action="" class="data">
                {% csrf_token %}
                    <table class="table sch_{{ school_class }}">
                        <thead>
                            <input type="hidden" name="school" value="{{ school_class }}" />
                            <th colspan="2">{{ school_class }}</th>
                        </thead>
                        <tbody>
                        {% for student in data %}
                            <tr>
                                <input type="hidden" name="stud" value="{{ student }}" />
                                <td>{{ student }}</td>
                                <input type="hidden" name="state" value="" class="state"/>
                                <td id="editable">{{ student }}</td>
                            </tr>
                        {% endfor %}
                    </tbody>
                 </table>
                <div class="col-md-12" style="text-align: right;">
                    <button type="submit" class="btn btn-success" id="send">Сохранить</button>
                </div>
            </form>
        </div>
    {% endfor %}

Ка правильно вытащить значения? При таком цикле получаю на каждой итерации заполнение таблицы одинаковыми значениями, соответсвенно.
Спасибо всем, кто откликнется)

UPD
Парсится ексель в словарь. Класс, ученики в классе и наличие ученика. Количество учеников может быть разное. Вот код вьюшки, понимаю, что тут надо поправить
files = DataFile.objects.values_list('file')
    for file in files:
        date, data = parse_table(media_root + '/' + file[0])
        if date == time.strftime('%d.%m.%Y'):
            full_dict.update(data.items())
            context['date'] = date
            context['class_names'] = full_dict.keys()
            context['students_data'] = full_dict
  • Вопрос задан
  • 873 просмотра
Решения вопроса 1
@javedimka
Хочу сока
Чтобы узнать как правильно вытащить значения, надо сначала узнать почему они вообще приходят в таком неудобном виде, а если возможности узнать и исправить нету - преобразовать в более удобный вид, например во вложенные списки:
def table_view(request):
    data = {'2A':
            ['Name', 'State',
             'Name2', 'State2',
             'Name3', 'State3',
             'Name4', 'State4',
             'Name5', 'State5']
            }
    data['2A'] = [data['2A'][i:i+2] for i in range(0, len(data['2A']), 2)]
    return render(request, 'app/template.html', {'students_data': data})


И тогда в шаблоне:
{% for student in data %}
<tr>
    <input type="hidden" name="stud" value="{{ student.0 }}" />
    <td>{{student.0 }}</td>
    <input type="hidden" name="state" value="" class="state"/>
    <td id="editable">{{ student.1 }}</td>
</tr>
{% endfor %}

или как вариант - использовать namedtuple, но что там по скорости будет не знаю.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы