1

ModelChoiceField を持つフォームがあります。ModelChoiceFields を処理するためのカスタム ウィジェットを作成しました。ウィジェットは forms.TextInput を拡張します。

class SelectWidget(forms.TextInput):

    def __init__(self, attrs):
        super(SelectWidget, self).__init__(attrs)

    def render(self, name, value, attrs=None):
        value = "" if value is None else value

        # html stuff here

        return html_stuff

そしてフォーム上:

class Form(forms.ModelForm)
    address = forms.ModelChoiceField(queryset=models.Address.objects.all(),
                                     widget=SelectWidget(attrs={}))

フォームを送信すると、必要な ModelChoiceField に提供されたクエリセットに対して、SelectWidget テキスト入力に入力された内容が検証されることを理解しています。

私の質問は:レンダー メソッドをオーバーライドしている SelectWidget で、ModelChoiceField に渡されたクエリセットにアクセスして、ウィジェットの「値」属性 (存在する場合) と照合するにはどうすればよいですか?

4

1 に答える 1

2

オブジェクトself.choicesであるカスタム選択ウィジェットでアクセスできますModelChoiceIterator

于 2013-01-09T13:24:15.977 に答える