当使用通用编辑UpdateView时,我在表单验证期间当前用于自定义error_messages的解决方案如下
models.py
from django.db import models
class Employee(models.Model):
first_name = models.CharField(max_length=100, verbose_name="Name")
last_name = models.CharField(max_length=100, verbose_name="Surname")
date_of_birth = models.DateField(blank=True, null=True, verbose_name="Birthday")
forms.py
from django import forms
from .models import Employee
class ModelFormWithCustomErrorMessages(forms.ModelForm):
class Meta:
model = Employee
fields = '__all__'
error_messages = {'date_of_birth': {'invalid': 'Custom invalid error message'}}
views.py:
from .models import Employee
from .forms import ModelFormWithCustomErrorMessages
class EmployeeUpdateView(UpdateView):
model = Employee
form_class = ModelFormWithCustomErrorMessages
我不喜欢这里的事情是你必须为你想要定义error_messages的每个模型创建单独的ModelForm(ModelFormWithCustomErrorMessages)。
为模型字段添加参数error_messages不适用于表单:
class Employee(models.Model):
date_of_birth = models.DateField(blank=True, null=True, error_messages={'invalid': 'Custom invalid error message'})
使用通用编辑视图时,是否有更好的方法来自定义error_messages?
答案 0 :(得分:1)
您可以使用modelform_factory()
功能,可能是这样的:
from django import forms
class EmployeeUpdateView(UpdateView):
model = Employee
form_class = forms.modelform_factory(
model=Employee,
fields='__all__',
error_messages={
'date_of_birth': {'invalid': 'Custom invalid error message'},
})
是的,模型错误消息仅在specific situations中使用,就像提到的文档一样。