我有一个具有 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 的任何查询集,以便根据小部件的“值”属性(如果有)检查它?