2012-02-20 3 views
0

私は比較的単純な問題のバットを持っていますが、最も適切な解決策を見つけました。DjangoマップされたリストとしてのGETキー

私はいくつかのユーザー選択可能な値をGet変数として渡すフォームを持っています。これらのほとんどはBooleanChoiceフィールドであり、選択することもできないこともあります。私が望むのは、が空でない場合はリストのすべてのGETキーを収集する簡潔な方法で、表見出しのために人間が読める形式にマップします。例えば

私のGET変数がのように見える場合:

['Site Name', 'Start Date', 'End Date', 'Mean Air Temp', ...,] 

['site', 'startdate', 'endate', 'man_air_temp', ...,] 

そしてで終わる:私はそうは次のようにリストを作りたい

?site=1&&startdate=1988-09-09&enddate=1989-09-09&mean_air_temp=True&q=table&submit=Query 

テンプレートの表見出しとして自分のデータに関連付けることができます。

これを行う方法はさまざまですが、私が望む結果を得るための簡潔で非凡な方法があるかどうかを知りたいと思います。

ご迷惑をおかけして申し訳ございません。

答えて

4

GETパラメータは、request.GETのディクショナリのようなオブジェクトとしてビューに提供されます。だから、あなたは自分の希望の見出しにキーをマップするために、別の辞書を必要とする:

header_mapping = { 
    'site': 'Site Name', 
    'startdate': 'Start Date'. 
    .... 
} 
headers = [header_mapping[k] for k, v in request.GET.items() if v] 

リストの内包は、単にGETののQueryDict中(キー、値)のペアのリストをマッピングし、その値が空でない場合ヘッダマッピングを参照してそれをリストに追加します。

+0

偉大な答え。ありがとうございました! –

関連する問題