How to change empty_label for modelForm choice field?
django, django-forms, dropdownbox, python, python-3.x
Solution
The problem is that you are trying to specify something that is not available for the type of Select field.
The empty_label option is for forms.ModelChoiceField, which happens to use a Select widget, but is not the same kind of field as your CharField that you are providing options for.
https://docs.djangoproject.com/en/dev/ref/forms/fields/#modelchoicefield
You can see this also in a previous question here: https://stackoverflow.com/a/740011/1406860
You could try and override the html of the modelform to add the first option as "please choose value". Alternatively, you could use a template filter to do the same thing. Lastly, you could and ("", "please choose value") to PAYROLL_CHOICES, and if you don't want it to be submitted without a payrollProvider just set blank=False for the field in the model.
JD
Problem
I have a field in one of my models like the following: ``` PAYROLL_CHOICES = ( ('C1', 'Choice1'), ('C2', 'Choice2') etc..... ) payrollProvider = models.CharField(max_length=2, choices=PAYROLL_CHOICES) ``` When I create a model form for this field, Django correctly generates an HTML select box, but includes a default blank value of "---------". I would like to know how to change this default value to some other text, such as "please choose value". I believe I should be able to set this in my model form's init via the following, as documented in this answer and several others: ``` self.fields['payrollProvider'].empty_label = "please choose value" ``` However, this isn't working for me. When I include that line in my form's init, "--------" still shows up as the initial choice in the select box. I'm pasting the relevant forms.py below, but it seems that others have also been unable to access / modify empty_label. At this link, the questioner describes a way to delete the default empty_label value (which I was able to do successfully via his method) but what I really want to do is to modify the empty_label that is displayed. Any ideas? Here's the code for the form in forms.py, with the empty_label code that isn't successful at changing the default "----------": ``` class PayrollCredentialForm(forms.ModelForm): def __init__(self, *args, **kwargs): super(PayrollCredentialForm, self).__init__(*args, **kwargs) self.fields['payrollUsername'].widget.attrs.update({'class' : 'yp-signup'}) self.fields['payrollPassword'].widget.attrs.update({'class' : 'yp-signup'}) self.fields['payrollProvider'].widget.attrs.update({'class' : 'yp-signup'}) self.fields['payrollUsername'].widget.attrs.update({'placeholder' : ' Payroll Username'}) self.fields['payrollPassword'].widget.attrs.update({'placeholder' : ' Payroll Password'}) self.fields['payrollProvider'].empty_label = "please choose value" class Meta: model = Company fields = ('payrollProvider', 'payrollUsername', 'payrollPassword') widgets = { 'payrollPassword': forms.PasswordInput(), } ```