2011-11-10 14 views
1

私のviews.pyで私は{date:value}のようなものです5つのdictを取得します すべての5つのdictsは同じ長さでテンプレートにはいくつかのURLdjangoのテンプレートは、キーに基づいてdict値にアクセスします

for key, value in loc.items(): 
    print key, loc[key], ctg[key], sctg[key], title[key], id[key] 

しかし:5つの表を結合するとき、あなたはpythonで共通の列

に基づいて、SQLクエリで行うように、あなたのような何かをするだろう - 一般的なフィールドが日付であることと、これらのdictsに基づきます私が思いつくことができるジャンゴのテンプレートでは、これは次のとおりです:

{% for lock, locv in loc.items %} 
    {% for ctgk, ctgv in ctg.items %} 
     {% for subctgk, subctgv in subctg.items %} 
      {% for titlek, titlev in titlu.items %} 
       {% for idk, idv in id.items %} 

          {% ifequal lock ctgk %} 
          {% ifequal ctgk subctgk %} 
           {% ifequal subctgk titlek %} 
            {% ifequal titlek idk %} 

            <br />{{ lock|date:"d b H:i" }} - {{ locv }} - {{ ctgv }} - {{ subctgv }} - {{ titlev }} - {{idv }} 
            .... {% endifequals & endfors %} 

もちろん醜いですし、今の私は、カスタムタグを構築するに探しています

をレンダリングするために多くの時間がかかりますが、あなたたちはこのトピック上の任意のフィードバックを持っている場合、私は不思議でしたか?

+0

カスタムタグを使用すると、私にとっては良いようです。たぶんJinja2が助けてくれるかもしれませんが、私はそれについてはわかりません。 –

+0

私は自分のテンプレートに必要なdict.get(key)を実行するカスタムタグを作成しました! – marlboro

答えて

0

整列したdicts以外のものを使用する必要があるように私に聞こえます。

class MyThing: 
    def __init__(self, loc, ctg, sctg, title, id): 
    self.loc = loc 
    self.ctg = ctg 
    self.sctg = sctg 
    self.title = title 
    self.id = id 

あなたのテンプレートコードを少し苦にしませんか? (私が問題を誤解した場合にはお詫び - あなたのネストされたifの次に苦労しています!)。

+0

if {5: 'a'、2: 'b'、3: 'c'、4: 'd'、5: 'x'、6: 'aa'} そしてifsはdict1 [1] dict2 [1] .. dict5 [1] とdict1 [2] dict2 [2] .. dict5 [2]などをプリントアウトすることを許可します – marlboro

+0

アイデアに感謝します。不思議になるカスタムタグ:) – marlboro

0

Djangoテンプレートは、辞書ルックアップ(varaibleが辞書の場合)としてドットで変数を解決しようとする必要があります。従ってctg.keyctg[key]に等しい。これを試してみましたか?

{% for key, value in loc.items %} 
    {{ key|date:"d b H:i" }} - {{ value }} - {{ ctg.key }} - {{ subctg.key }} - {{ title.key }} - {{ id.key }} 
+0

これはうまくいきません...あなたの必要に応じて、タグやフィルタを作成するのがベストです...タグを作成しましたが、今はフィルタがより良い – marlboro

関連する問題