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 に渡されたクエリセットにアクセスして、ウィジェットの「値」属性 (存在する場合) と照合するにはどうすればよいですか?