2009-07-15 17 views
0

私は、年/月に基づいて異なる数のフィールドを使用するDjangoフォームを持っています。だから私はこのようなフォームでフィールドを作成します:複雑なDjangoフォームからPOSTデータを取得しますか?

for entry in entry_list: 
    self.fields[entry] = forms.DecimalField([stuffhere]) 

しかし、今私はフォームから送信されたデータを取得する方法がわかりません。

通常、私のようなものだろう:

form.cleaned_data["fieldname"] 

を私はフィールドの名前が何であるかを知りません。デバッグ画面には、私のPOSTデータが単に "Entry Object"という値で "u"の値で表示されます。 POST.lists()を呼び出しても何も表示されません。

私は確かに何かを見逃していると確信していますが、私は数日間これにつきすぎてしまいました。これを行うより良い方法はありますか?リクエストオブジェクト内のすべてのデータは使用できますが、使用方法はわかりません。ここで

は、モデル/フォーム/ビューのコードは次のとおりです。http://pastebin.com/f28d92c0e

多くの感謝!

編集:

以下の両方の提案を試しました。 formsetsの使用は間違いなく簡単ですばらしいものでした。

答えて

5

ここでformsetsを使用する方が良いと思います。彼らはあなたがやろうとしているように、フォーム内のさまざまなアイテムを扱うように設計されています。

+0

Formsetsは、私が必要とするもののように見えます。ありがとうございます。 – mdashx

0

この行に:

self.fields [エントリー] = forms.DecimalField(max_digits = 4、decimal_places = 1、ラベル= nice_label)

エントリは、モデルインスタンスあります。しかし、フィールドはフィールド名(文字列)でキーイングされます。

self.fields [entry.entry_name] = forms.Decimal(...)

( "entry_nameで" の代わりに適切な):のようなものを試してみてください。

+0

ありがとうございます。私は今朝仕事に出た直前に気付いた。私はformsetsを試してみるつもりですが、私のフォームでエラーを見つけるのを助けてくれてありがとう、うまくいけば、私の将来のフォームがうまくいくでしょう。 – mdashx

+0

これは実際に私が今修正している方法です。これまでのところすべてがすばらしく機能しています。ありがとう! – mdashx

+0

これはうまくいきました。 :-) – ars

関連する問題