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 回答