django动态变量形式字段
假设我有两种类型的对象,django动态变量形式字段,django,django-forms,django-views,Django,Django Forms,Django Views,假设我有两种类型的对象,苹果和链锯。用户将看到一个表单,第一个字段询问他们想要购买哪个对象。如果他们选择苹果Apples,我希望一个select表单字段动态显示,带有绿色和红色选项以及颜色标签。另一方面,如果他们选择链锯,我希望动态显示两个表单字段,一个是带有您姓名标签的CharField,另一个是带有您年龄标签的IntegerField(跟踪谁在购买您的链锯是个好主意) 当然,这只是一个例子。其主要思想是,我希望能够根据用户从初始选择列表中选择的选项,使用Django模板动态选择字段的数量和类
苹果
和链锯
。用户将看到一个表单,第一个字段询问他们想要购买哪个对象。如果他们选择苹果Apples,我希望一个select表单字段动态显示,带有绿色和红色选项以及颜色标签。另一方面,如果他们选择链锯
,我希望动态显示两个表单字段,一个是带有您姓名标签的CharField,另一个是带有您年龄标签的IntegerField(跟踪谁在购买您的链锯是个好主意)
当然,这只是一个例子。其主要思想是,我希望能够根据用户从初始选择列表中选择的选项,使用Django模板动态选择字段的数量和类型以及字段中的数据。我发现了大量与动态填充选择列表或添加同类字段(例如,其他文件上载字段)相关的教程和问题,但我似乎不知道如何动态添加/更改表单的属性
谢谢你的帮助!
-简而言之,这需要混合使用CSS、javascript和django表单 形式 步骤1是使用我的clean方法创建一个带有条件验证的表单
from django import forms
from django.utils.translation import ugettext as _
from django.forms.widgets import RadioSelect, Textarea, CheckboxSelectMultiple
from django.utils.safestring import mark_safe
class FormContact(forms.Form):
"""
The contact form
"""
choice_a = forms.ChoiceField(
label=_(u' '),
choices=(
(1, mark_safe(_(u'First Option'))),
(0, mark_safe(_(u'Second Option'))),
),
widget=RadioSelect,
initial=1
)
show_if_choice_1 = forms.CharField(
label=_(u'Choice 1 text box')
)
show_if_choice_2 = forms.CharField(
label=_(u'Choice 2 text box')
)
def clean(self):
super(forms.Form, self).clean()
if 'choice_a' in self.cleaned_data :
if self.cleaned_data['choice_a'] == '1':
if self.cleaned_data['show_if_choice_1'] == '' :
self._errors['show_if_choice_1'] = self.error_class([_(u'Please Fill out choice 1 text box.'),])
if self.cleaned_data['choice_a'] == '2':
if self.cleaned_data['show_if_choice_2'] == '' :
self._errors['show_if_choice_2'] = self.error_class([_(u'Please fill out choice 2 box'),])
return self.cleaned_data
JS和CSS
编写一些javascript+CSS,根据条件字段的值显示隐藏字段
注意:如果您需要更多的指导,请告诉我,如果您很快获得jist,我不想花很长时间打字。谢谢,这似乎很有帮助;我将在运行一些测试后确认您的答案:)