0

我是 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 %}

但我不能那样做。我应该怎么办?谢谢你。

4

1 回答 1

0

form.property_type是一个 BoundForm 对象,如果你想访问它的值,你需要使用form.property_type.value

这就是为什么您的比较{% if form.property_type=='1'}不起作用的原因。

有关更多详细信息,请参阅此页面约 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"例如)。

于 2012-05-26T21:35:31.797 回答