0

我有这样的模型形式:

from django.forms import widgets

class AdvancedSearchForm(forms.ModelForm):

    class Meta:
        model= UserProfile
        fields = ( 'name', 'location', 'options')

其中 'options' 是一个元组列表,并在模板中自动呈现为下拉菜单。但是我希望用户能够在搜索表单中选择多个选项。

我知道我需要在查看文档时向表单类添加一个小部件,在我看来,它需要像这样的类:

widgets = {
    'options':  ModelChoiceField(**kwargs)
} 

但是我收到此错误

name 'MultipleChoiceField' is not defined

所以最终无法弄清楚如何实现这一点。所以感谢你的帮助。

4

1 回答 1

3

ModelChoiceField不是一个小部件,它是一个表单字段,但要使用它的多个版本,您需要覆盖字段:

class AdvancedSearchForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(AdvancedSearchForm, self).__init__(*args, **kwargs)
        self.fields['options'].empty_label = None

    class Meta:
        model= UserProfile
        fields = ( 'name', 'location', 'options')

然后要将小部件覆盖为复选框,请使用CheckboxSelectMultiple

widgets = {
    'options':  forms.CheckboxSelectMultiple()
} 
于 2013-10-29T20:58:46.057 回答