我目前在使用通用编辑UpdateView时在表单验证期间用于自定义error_messages的解决方案如下
模型.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")
表单.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'})
使用通用编辑 View 时是否有更好的方法来自定义 error_messages?
最佳答案
您可以使用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 中使用,就像文档提到的那样。
关于python - 使用通用编辑 UpdateView 时在表单验证期间自定义 error_messages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50523146/