2つのラジオボタン(男性/女性)を持つフォームを作成しました。その下には、名と名前の入力ボックスがあります。フォームセットを使用してフォームを複製すると、すべての入力ボックスのラジオボタンが含まれるため、除外したいと思いました。ユーザーが「男性」を選択したら、名前は性別の選択と一致する必要があると想定します。
出力は次のようになります。
O男性O女性
名前苗字: _______________
名前苗字: _______________
..。
forms.py
from django import forms
class NameForm (forms.Form):
GENDER = (
('Male', 'Male'),
('Female', 'Female')
)
gender = forms.ChoiceField (widget = forms.RadioSelect, choices = GENDER)
first_name = forms.CharField (max_length = 20)
last_name = forms.CharField (max_length = 20)
Shell Output:
>>> from django.forms.formsets import formset_factory
>>> from nameform.forms import NameForm
>>>
>>> NameFormSet = formset_factory (NameForm, extra = 2)
>>> formset = NameFormSet ()
>>> for form in formset:
... print (form.as_table())
...
<tr><th><label for="id_form-0-gender_0">Gender:</label></th><td><ul id="id_form-0-gender">
<li><label for="id_form-0-gender_0"><input id="id_form-0-gender_0" name="form-0-gender" type="radio" value="Male" /> Male</label></li>
<li><label for="id_form-0-gender_1"><input id="id_form-0-gender_1" name="form-0-gender" type="radio" value="Female" /> Female</label></li>
</ul></td></tr>
<tr><th><label for="id_form-0-first_name">First name:</label></th><td><input id="id_form-0-first_name" maxlength="20" name="form-0-first_name" type="text" /></td></tr>
<tr><th><label for="id_form-0-last_name">Last name:</label></th><td><input id="id_form-0-last_name" maxlength="20" name="form-0-last_name" type="text" /></td></tr>
<tr><th><label for="id_form-1-gender_0">Gender:</label></th><td><ul id="id_form-1-gender">
<li><label for="id_form-1-gender_0"><input id="id_form-1-gender_0" name="form-1-gender" type="radio" value="Male" /> Male</label></li>
<li><label for="id_form-1-gender_1"><input id="id_form-1-gender_1" name="form-1-gender" type="radio" value="Female" /> Female</label></li>
</ul></td></tr>
<tr><th><label for="id_form-1-first_name">First name:</label></th><td><input id="id_form-1-first_name" maxlength="20" name="form-1-first_name" type="text" /></td></tr>
<tr><th><label for="id_form-1-last_name">Last name:</label></th><td><input id="id_form-1-last_name" maxlength="20" name="form-1-last_name" type="text" /></td></tr>
フォームとフォームセットが必要です。名前だけを含むフォーム、繰り返し要素を含むフォームセット。
繰り返しフォームクラスを使用し、それをハックして最初のクラスを別の方法で処理することは、実際には意味がありません。
または、これがデータの問題(レガシーインターフェイスなど)であり、フォームに両方を含める必要がある場合は、他のすべての要素を非表示にし、javascriptを使用して非表示の性別の選択を入力することができます。
ただし、実際には、とを使用する必要がForm
ありFormSet
ます。
{{ form.as_p }}
{% for form in formset %}
{{ form.as_p }}
{% endfor %}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加