質問

テンプレートに表示したい回数のリストを持つ辞書を持っています:

from django.utils.datastructures import SortedDict

time_filter = SortedDict({
    0 : "Eternity",
    15 : "15 Minutes",
    30 : "30 Minutes",
    45 : "45 Minutes",
    60 : "1 Hour",
    90 : "1.5 Hours",
    120 : "2 Hours",
    150 : "2.5 Hours",
    180 : "3 Hours",
    210 : "3.5 Hours",
    240 : "4 Hours",
    270 : "4.5 Hours",
    300 : "5 Hours"
})
.

テンプレートにドロップダウンを作成したい:

<select id="time_filter">
    {% for key, value in time_filter.items %}
        <option value="{{ key }}">{{ value }}</option>
    {% endfor %}
</select>
.

しかしドロップダウンの要素は、辞書で定義されている順序では通過していません。私は何が足りないのですか?

他のヒント

鍵をソート順に維持するPythonの多くの辞書実装の1つを使用することを検討してください。たとえば、 sortedContainersモジュールは、純粋なPythonとFast-Conterの実装です。高速取得/設定/ ITER操作をサポートし、キーをソートし続けます。パフォーマンス比較そのベンチマークは、他のいくつかの一般的な選択肢に対する実装をベンチマークします。

引数として「通常の」SortedDictを使用してdictをインスタンス化します。注文は失われます。順序付けを保持するITERABLEを持つSortedDictをインスタンス化する必要があります。:

SortedDict((
   (0, "Eternity"),
   (15, "15 Minutes"),
   # ...
))
.

この回答は質問に正確に答えないかもしれません、あなたはDjangoテンプレートタグから「DictSort」と「DictSortReversed」を使用して通常のDictをソートすることができます。そのため、SortedDictを使用する必要はありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top