Jak zmienić empty_label na pole wyboru modeluForm?
Mam jedno pole w jednym z moich modeli:
payrollProvider = models.CharField(max_length=2, choices=PAYROLL_CHOICES)
PAYROLL_CHOICES = (
('C1', 'Choice1'),
('C2', 'Choice2')
etc.....
)
Kiedy tworzę formularz modelu dla tego pola, Django poprawnie generuje pole wyboru HTML, ale zawiera domyślną pustą wartość „---------”.
Chciałbym wiedzieć, jak zmienić tę domyślną wartość na inny tekst, na przykład „proszę wybrać wartość”.
Uważam, że powinienem być w stanie ustawić to w moim modeluw tym zgodnie z poniższym dokumentemw tej odpowiedzi i kilka innych:
self.fields['payrollProvider'].empty_label = "please choose value"
Jednak to nie działa dla mnie. Kiedy dołączę tę linię do mojego formularzaw tym, „--------” nadal pojawia się jako początkowy wybór w polu wyboru. Wklejam odpowiednie formularze.py poniżej, ale wydaje się, że inni mająrównież nie mógł uzyskać dostępu / zmodyfikować pustej etykiety. Na tym łączu pytający opisuje sposóbkasować domyślna wartość empty_label (którą udało mi się z powodzeniem wykonać za pomocą jego metody), ale naprawdę chcę to zrobićmodyfikować wyświetlona pusta etykieta.
Jakieś pomysły?
Oto kod formularza w plikach formula.py, z kodem pustej etykiety, który nie może zmienić domyślnego „----------”:
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(),
}