2011-01-09 7 views
0

私はフォームを持っているにこのような何かの生成:次のように私はBirth_Dateの(日付フィールド)で、このフォームに使用していたとDjangoのテンプレート内のフォームフィールドのそれぞれに固有の名前

class PersonForm(forms.ModelForm): 
    name=forms.CharField(label = 'Name') 
    birth_date = forms.DateField(widget = SelectDateWidget(years=range(1985,2020)),label = 'DOB') 
    place = forms.CharField(label='Place') 

は、テンプレートで二回繰り返し:

{% for field in form %} 
<tr> 
     <th scope="row" class={% cycle "spec" "specalt" %}> </th>    
     <td {% cycle '' 'class="alt"' %}> 

    {% if field.field.datatype == 'Date' %} 

     **Range : {{field}} {{field}}**    

    {% else %} 
     {{ field}}    
    {% endif %} 

上記のように、日付フィールドを2回繰り返しています。しかし、私はPOST要求でフォームを受け取る、私は両方の日付フィールドを区別することができません。テンプレートの日付フィールドの名前を変更して、ビュー機能で簡単に区別できるようにするにはどうすればいいですか?

注:「PersonForm(forms.ModelForm)」クラスに別のフィールドを追加することを提案しないでください。実際の問題では除外されています。私は自分の必要に応じて質問を述べました。 ありがとうございます。

+1

"私が実際に抱えている問題"について説明した場合は、問題を正しい方法で解決するのが容易になります。 –

+0

なぜ、出力は異なる名前の2つの入力ですか? –

+0

いいえ、あなたは間違いなく「あなたの必要に応じて質問を述べました」。この質問は、言い換えれば全く意味をなさない。なぜあなたは同じフィールドからの入力を日付にする必要があると思いますか?実際に何をしようとしていますか? –

答えて

0

私は適切な解決策は、それらの2つのフィールドをレンダリングするウィジェットを作成し、値を取得して、その値に対していくつかのクリーニング操作を実行できることだと思います。

私が知っているように、カスタムウィジェットの作成に関する詳細なドキュメントはありません。あなたがDjangoのコードに見出すことができる実施例によりコードすることができる:

django.forms.widgets 
0

ジャンゴのフォームがエンドユーザーに表示されるフィールドを表すことになっています。フォームのビジュアル表現が、フォームに宣言されているフィールドよりも多いか少ないかを含むと思われる場合は、間違っている可能性があります。

「開始日」フィールドと「終了日」フィールドが必要な場合は、作成しているフォームクラス内でそれを表す必要があります。上記のように日付が1つだけのフォームが必要な場合は、2つの異なるフォームを使用してください。

フォームをハイジャックし、変更して表示し、データにバインドされたサーバーに到達した後にフォームを検証するという簡単な方法はありません。フォームの動的サブクラスを行うことはできますが、この状況ではこれがどのように良いものになるのか分かりません。あなたは、コンパイル時に必要なフィールドを知っています。ちょうどそれらをフォームに入れてください!たとえそれがブランドスパンキングの新しいものであったとしても。

最後に1つ、あなたがforms.ModelFormを使用している理由はありますか?あなたは完全にカスタマイズされたフォームを作成しているようです。私はforms.Formがあなたの後であると思います。

関連する問題