Empty Label ChoiceField Django

后端 未结 7 935
猫巷女王i
猫巷女王i 2020-12-23 19:38

How do you make ChoiceField\'s label behave like ModelChoiceField? Is there a way to set an empty_label, or at least show a blank fiel

7条回答
  •  轮回少年
    2020-12-23 20:36

    It is not the same form, but I did it the following way inspired by the EmptyChoiceField method:

    from django import forms
    from ..models import Operator
    
    
    def parent_operators():
        choices = Operator.objects.get_parent_operators().values_list('pk', 'name')
        choices = tuple([(u'', 'Is main Operator')] + list(choices))
        return choices
    
    
    class OperatorForm(forms.ModelForm):
        class Meta:
            model = Operator
            # fields = '__all__'
            fields = ('name', 'abbr', 'parent', 'om_customer_id', 'om_customer_name', 'email', 'status')
    
        def __init__(self, *args, **kwargs):
            super(OperatorForm, self).__init__(*args, **kwargs)
            self.fields['name'].widget.attrs.update({'class': 'form-control m-input form-control-sm'})
            self.fields['abbr'].widget.attrs.update({'class': 'form-control m-input form-control-sm'})
            self.fields['parent'].widget.attrs.update({'class': 'form-control m-input form-control-sm'})
            self.fields['parent'].choices = parent_operators()
            self.fields['parent'].required = False
            self.fields['om_customer_id'].widget.attrs.update({'class': 'form-control m-input form-control-sm'})
            self.fields['om_customer_name'].widget.attrs.update({'class': 'form-control m-input form-control-sm'})
            self.fields['email'].widget.attrs.update({'class': 'form-control m-input form-control-sm', 'type': 'email'})enter code here
    

提交回复
热议问题