从自定义小部件访问ModelChoiceField查询集

时间:2013-01-09 13:11:05

标签: django django-widget

我有一个包含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”属性(如果有的话)进行检查?

1 个答案:

答案 0 :(得分:2)

您可以在自定义选择窗口小部件self.choices对象

中访问ModelChoiceIterator