如何覆盖默认的 Django 表单验证错误
how to override default Django form validation error
我试过了,但没用。显示默认错误消息 only.please 帮助......
from django import forms
from SharedApps_Application.models import certificateDb
from django.contrib.admin.widgets import AdminDateWidget
from django.forms.fields import DateField
my_default_errors = {
'required': 'Application field is required',
}
class CertificateForm(forms.ModelForm):
startdate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
expiredate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
application = forms.CharField(error_messages = my_default_errors)
class Meta:
model = certificateDb
fields = ('application', 'startdate', 'expiredate', 'environment_type','File' )
screenshot
[1]: https://i.stack.imgur.com/8zhM6.png
update
from django import forms
from SharedApps_Application.models import certificateDb
from django.contrib.admin.widgets import AdminDateWidget
from django.forms.fields import DateField
class CertificateForm(forms.ModelForm):
startdate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
expiredate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
application = forms.CharField()
class Meta:
model = certificateDb
fields = ('application', 'startdate', 'expiredate', 'environment_type','File' )
error_messages = {
'application': {
'required': ("Application field is required"),
},
}
根据您刚刚添加的屏幕截图,您想更改浏览器呈现给客户端的错误消息。这可以通过向您的字段添加 oninvalid
属性来完成。
这是在您的 forms.py 文件中完成的方式:
from django import forms
from SharedApps_Application.models import certificateDb
from django.contrib.admin.widgets import AdminDateWidget
from django.forms.fields import DateField
class CertificateForm(forms.ModelForm):
app_attributes = {'oninvalid': 'this.setCustomValidity("Application field is required")', 'oninput': 'this.setCustomValidity("")'}
startdate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
expiredate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
application = forms.CharField(widget=forms.TextInput(attrs=app_attributes)
class Meta:
model = certificateDb
fields = ('application', 'startdate', 'expiredate', 'environment_type','File' )
error_messages = {
'application': {
'required': ("Application field is required"),
},
}
假设您要覆盖的字段是 'application'
。在您的 class 元下添加一个 error_messages
字典,如下所示:
旧答案 - 覆盖 Django 表单验证错误消息
from django import forms
from SharedApps_Application.models import certificateDb
from django.contrib.admin.widgets import AdminDateWidget
from django.forms.fields import DateField
class CertificateForm(forms.ModelForm):
startdate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
expiredate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
application = forms.CharField()
class Meta:
model = certificateDb
fields = ('application', 'startdate', 'expiredate', 'environment_type','File' )
error_messages = {
'application': {
'required': ("Application field is required"),
},
}
我试过了,但没用。显示默认错误消息 only.please 帮助......
from django import forms
from SharedApps_Application.models import certificateDb
from django.contrib.admin.widgets import AdminDateWidget
from django.forms.fields import DateField
my_default_errors = {
'required': 'Application field is required',
}
class CertificateForm(forms.ModelForm):
startdate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
expiredate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
application = forms.CharField(error_messages = my_default_errors)
class Meta:
model = certificateDb
fields = ('application', 'startdate', 'expiredate', 'environment_type','File' )
screenshot
[1]: https://i.stack.imgur.com/8zhM6.png
update
from django import forms
from SharedApps_Application.models import certificateDb
from django.contrib.admin.widgets import AdminDateWidget
from django.forms.fields import DateField
class CertificateForm(forms.ModelForm):
startdate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
expiredate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
application = forms.CharField()
class Meta:
model = certificateDb
fields = ('application', 'startdate', 'expiredate', 'environment_type','File' )
error_messages = {
'application': {
'required': ("Application field is required"),
},
}
根据您刚刚添加的屏幕截图,您想更改浏览器呈现给客户端的错误消息。这可以通过向您的字段添加 oninvalid
属性来完成。
这是在您的 forms.py 文件中完成的方式:
from django import forms
from SharedApps_Application.models import certificateDb
from django.contrib.admin.widgets import AdminDateWidget
from django.forms.fields import DateField
class CertificateForm(forms.ModelForm):
app_attributes = {'oninvalid': 'this.setCustomValidity("Application field is required")', 'oninput': 'this.setCustomValidity("")'}
startdate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
expiredate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
application = forms.CharField(widget=forms.TextInput(attrs=app_attributes)
class Meta:
model = certificateDb
fields = ('application', 'startdate', 'expiredate', 'environment_type','File' )
error_messages = {
'application': {
'required': ("Application field is required"),
},
}
假设您要覆盖的字段是 'application'
。在您的 class 元下添加一个 error_messages
字典,如下所示:
旧答案 - 覆盖 Django 表单验证错误消息
from django import forms
from SharedApps_Application.models import certificateDb
from django.contrib.admin.widgets import AdminDateWidget
from django.forms.fields import DateField
class CertificateForm(forms.ModelForm):
startdate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
expiredate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
application = forms.CharField()
class Meta:
model = certificateDb
fields = ('application', 'startdate', 'expiredate', 'environment_type','File' )
error_messages = {
'application': {
'required': ("Application field is required"),
},
}