我有一个包含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的任何查询集,以便根据窗口小部件的“value”属性(如果有的话)进行检查?
答案 0 :(得分:2)
您可以在自定义选择窗口小部件self.choices
对象
ModelChoiceIterator