当您从Django中的另一个选择框中选择时,如何显示另一个选择框

时间:2012-05-26 21:16:45

标签: django

我是Django的新手。 现在我有下面定义的课程

PROPERTY_TYPE_CHOICE = [['1', 'Fixed (TODO)'],
                    ['2', 'Trajectory (TODO)'],
                    ['3', 'Error_Detecting'],
                    ['4', 'Error_Correcting']]
FIXED_TYPE_CHOICE = [['1', 'Prefix',
                      '2', 'Suffix']]

class UploadFileForm(forms.Form):
    # title = forms.CharField(max_length=50)
    automata_file  = forms.FileField(required = True)
    transducer_file = forms.FileField(required = True)
    property_type = forms.ChoiceField(choices=PROPERTY_TYPE_CHOICE,
                                      required=True)
    fixed_type = forms.ChoiceField(choices=FIXED_TYPE_CHOICE,
                                   required=True)
    debug_output = forms.BooleanField(required=False)

我在前面的html中显示了这个PROPERTY_TYPE_CHOICE

<div class="fieldWrapper">
    {{ form.property_type.errors }}
    <label for="id_a">Select <u>a type</u> of property:</label>
    {{ form.property_type }}
</div>

如果我在PROPERTY_TYPE_CHOICE中选择第一个选择“Fixed(TODO)”,我想显示FIXED_TYPE_CHOICE。 我阅读了关于Django的文档,我认为它可以用这种方式实现:

<div class="fieldWrapper">
    {{ form.property_type.errors }}
    <label for="id_a">Select <u>a type</u> of property:</label>
    {{ form.property_type }}
</div>
{% if form.property_type=='1' %}
    <div class="fieldWrapper">
        {{ form.fixed_type.errors }}
        <label for="id_a">Select <u>a fixed type</u> of property:</label>
    {   { form.fixed_type }}
    </div>
{% endif %}

但我做不到。 我该怎么办?谢谢。

1 个答案:

答案 0 :(得分:0)

form.property_type是一个BoundForm对象,如果您想要访问其值,则需要使用form.property_type.value

这就是{% if form.property_type=='1'}的比较无效的原因。

有关详细信息,请参阅自定义表单模板部分下的this page约2/3的内容。

要在没有页面刷新的情况下进行更新,您需要以下Javascript(确保您还包含jQuery库(http://jquery.com/):

$("#property_type").change (function() {
    if($(this).val() == '1') {
        $("#fixed_type").show();
    } else {
        $("#fixed_type").hide();
    }
} )

并确保例如给出下拉列表对应的id属性(id="property_type")。