4

私はdjangoとpythonの両方に不慣れで、現在、さまざまなオプションと、リストにないオプションの「その他」オプションを含むフォームを作成しようとしています。「other」がチェックされている場合、他のテキストボックスに空でない値が含まれている場合にのみフォームが検証されるようにオプションを定義したいと思います。

これを達成するためにdjangoフォーム/フィールド/ウィジェットを拡張する適切な方法はありますか? googleとstackoverflowを検索した後に見つけることができる最も近いものは、カスタムレンダラー、ウィジェット、およびフォームフィールドを拡張して作成するコードを提供するこの例ですが、これは古いバージョンのdjangoに基づいています。

4

1 に答える 1

4

フォームのレンダリングに使用している場合はdjango.forms.ModelForm、オプションフィールド()のフォーム検証でこれを行うことができますclean_[your field name]

from django import forms

class YourModelForm(forms.ModelForm):
    def clean_your_options(self):
        your_options = self.cleaned_data.getlist('your_options')

        if 'other' in your_options:
            other_text_input = self.cleaned_data.get('other_text_input')
            if len(other_text_input) == 0:
                raise forms.ValidationError('Other text input must contain value')

        return your_options
于 2012-07-26T14:33:55.137 に答える