私のモデルの1つに、次のようなフィールドがあります。
payrollProvider = models.CharField(max_length=2, choices=PAYROLL_CHOICES)
PAYROLL_CHOICES = (
('C1', 'Choice1'),
('C2', 'Choice2')
etc.....
)
このフィールドのモデルフォームを作成すると、DjangoはHTML選択ボックスを正しく生成しますが、デフォルトの空白値「---------」が含まれています。
このデフォルト値を「値を選択してください」などの他のテキストに変更する方法を教えてください。
この回答や他のいくつかの回答に記載されているように、次の方法でモデルフォームのinitにこれを設定できるはずです。
self.fields['payrollProvider'].empty_label = "please choose value"
しかし、これは私にはうまくいきません。その行をフォームの初期化に含めると、「--------」が選択ボックスの最初の選択肢として表示されます。以下に関連するforms.pyを貼り付けていますが、他の人もempty_labelにアクセス/変更できていないようです。このリンクで、質問者はデフォルトのempty_label値(彼のメソッドを介して正常に実行できました)を削除する方法を説明していますが、私が本当にやりたいのは、表示されるempty_labelを変更することです。
何か案は?
以下はforms.pyのフォームのコードで、empty_labelコードはデフォルトの「----------」の変更に成功していません。
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(),
}