3

在 Forms 中,我们可以使用empty_label。我使用小部件Select,我的选择来自数据库,可以在这里使用empty_label吗?在模型中我有:

position = forms.IntegerField(label=position_label, required=False, 
    widget=forms.Select(choices=Position.objects.all().values_list('id', 'position'),
    attrs={'class':'main', 'title': position_label},
    ), empty_label="(Empty)")

但错误是:

TypeError: __init__() got an unexpected keyword argument 'empty_label'

如何将标签设置为“空”?谢谢。

4

3 回答 3

9

empty_label有两种实现方式:

class MyForm(forms.ModelForm):
    class Meta:
        model = MyModel

    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        self.fields['field_name'].empty_label = "(Select here)"
        self.fields['field_name'].widget.attrs['class'] = 'main'
        self.fields['field_name'].queryset = Position.objects.all().values_list('id', 'position')

//OR   

class MyForm(forms.ModelForm):
    field_name = forms.ModelChoiceField(
        queryset=Position.objects.all().values_list('id', 'position'), 
        empty_label="(Select here)"
        )

    class Meta:
        model = MyModel
于 2013-03-05T12:54:44.710 回答
3

empty_label是字段的属性,而不是小部件。您已经label有一套 for position

于 2013-03-05T12:18:40.837 回答
0

来自 Django 文档https://docs.djangoproject.com/en/1.10/ref/forms/widgets/#django.forms.SelectDateWidget

如果不需要DateField ,则SelectDateWidget将在列表顶部有一个空选项(默认为 ---)。您可以使用empty_label 属性更改此标签的文本。empty_label可以是字符串、列表或元组。使用字符串时,所有选择框都会有一个带有此标签的空选项。如果empty_label是 3 个字符串元素的列表或元组,则选择框将有自己的自定义标签。标签应按此顺序排列('year_label'、'month_label'、'day_label')。

于 2017-03-10T12:32:01.923 回答