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,我不想花很长时间打字。

谢谢,这似乎很有帮助;我将在运行一些测试后确认您的答案:)