Шаблонный словарь Django отображается в неправильном порядке - PullRequest
0 голосов
/ 04 ноября 2011

У меня есть следующий словарь.Имя переменной - Division_total_display

{87L: {'name': ,
       'total': 660L,
       'total_percentage': 39,
       'total_right': 256L},
 88L: {'name': ,
       'total': 660L,
       'total_percentage': 42,
       'total_right': 274L},
 89L: {'name': ,
       'total': 435L,
       'total_percentage': 34,
       'total_right': 148L}}

Я передаю шаблон следующим образом:

    return render_to_response('site/report_topic_standard_stat.html',
        {
            'report_date' : report_date,
            'et_display' : et_display,
            'stats_display' : stats_display,
            'division_total_display' : division_total_display,
            'school' : school,
            'board' : board,
            'standard' : standard,
            'standard' : standard,
            'subject' : subject,
            'from_time' : from_time,
            'term_id' : term_id,
            'white_label' : white_label,
        },
        context_instance=RequestContext(request)

Однако в шаблоне при печати {{Division_total_display}}

{88L: {'total_right': 274L, 'total': 660L, 'total_percentage': 42, 'name': }, 
 89L: {'total_right': 148L, 'total': 435L, 'total_percentage': 34, 'name': },
 87L: {'total_right': 256L, 'total': 660L, 'total_percentage': 39, 'name': }}

Обратите внимание на порядок: - начинается с 88 вместо 87.

Я хочу, чтобы он начинался с 87, а затем с 88 и 89.

Ответы [ 2 ]

4 голосов
/ 04 ноября 2011

Словари не упорядочены. Вместо этого используйте вложенный список.

1 голос
/ 04 ноября 2011

Попробуйте использовать OrderedDict . Обычные словари python неупорядочены - они реализованы с использованием хеш-таблиц, которые будут шифровать порядок ключей.

Согласно документам для словарей : «словарь лучше всего рассматривать как неупорядоченный набор пар ключ: значение с требованием, чтобы ключи были уникальными (в пределах одного словаря)».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...