2011-12-03 23 views
4

私はDjangoでフォームを作成しています。データをPOSTすると、データが自然に送信されます。私の問題は、POSTデータに追加のプロパティを渡したいと思います。これはフォームフィールドではなく、追加のものです。djangoフォームの追加フィールド

だから私は、後に(擬似コード)のような何かを行うことができ:POSTリクエストに、フィールドが、単純な変数ではありません余分な財産を、渡すために働くかもしれない

def form_view(request): 
    if request.method == 'POST': 
     form = MyForm(request.POST) 
     if form.is_valid(): 
      extra_field = form.cleaned_data['extra_field'] 
      #or maybe 
      extra_field = form.extra_field 
      #... 
    else: 
     form = MyForm() 
     #... 

何かを。

答えて

4

あなたがHTMLからPOSTリクエストとしてジャンゴために何かを渡したい場合は、あなたのビューからのpythonでPOST辞書を変更したい場合は、あなたが隠し入力

<input type="hidden" name="foo" value="bar" /> 

print request.POST['foo'] # out: bar 

を使用することになり、copy()それはへそれを変更可能にする。

+0

はい、それでした。ありがとうございました ! –

+0

@ VascoPatricio問題はありませんが、一般的には、あなたの質問に実際に答える答えを受け入れたいと思っています。 –

+0

ええ、私はこのサイトを初めて知りました...あなたは1つの答えしか受け入れることができないことは分かりませんでした。今すぐ入手してください。一定。 –

1

これを行う方法はいくつかあります。 1つは、テンプレートに追加するだけです。

<form action="." method="post">{% csrf_token %} 
    {{ form.as_p }} 
    <input type="hidden" name="extra_field" value="{{ extra }}" /> 
    <input type="submit" value="submit" /> 
</form> 

もう1つの方法は、フィールドをフォームクラスに追加することですが、hidden widgetを使用します。これがあなたが望むものなのかどうかは分かりません。そうであれば、コメントを追加するだけで、この点についてさらに説明することができます。

+0

はい、それはそれを修正しました。ありがとうございました ! –

2

フォームのcleanメソッドでは、form.cleaned_data['extra'] = 'monkey butter!'のような新しい情報をcleaned_dataに追加できます。form.is_valid()の場合は、追加情報があります。

最後に行うことは、あなたの追加情報が何であり、どこで利用できるかによって異なります。

+0

これは別のアプローチですが、非常に便利です。ありがとうございました ! –

関連する問題