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)

このPROPERTY_TYPE_CHOICEをフロントHTMLに表示しています

<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'}機能しません。

詳細については、このページの3分の2ほど下の「フォームテンプレートのカスタマイズ」セクションを参照してください。

ページを更新せずに更新するには、次のような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 に答える