首页 > 解决方案 > django 的两个唯一字段的自定义验证错误

问题描述

我想为两个唯一的字段编写自己的验证错误

class MyModel(models.Model):
    name = models.CharField(max_length=20)
    second_field = models.CharField(max_length=10)
    #others
    class Meta:
        unique_together = ('name','second_field')

和我的forms.py

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = '__all__'

    error_messages= {#how to write my own validation error whenever `name and second_field` are unique together }:
        
     

如何在name and second_field唯一的时候编写我自己的验证错误?如果两个字段一起是唯一的,我需要提出一些错误?感谢您的回复

标签: djangovalidationdjango-formsdata-cleaning

解决方案


来自 django文档-

您可以通过将 NON_FIELD_ERRORS 键添加到 ModelForm 的内部 Meta 类的 error_messages 字典来覆盖模型验证引发的 NON_FIELD_ERRORS 中的错误消息

from django.core.exceptions import NON_FIELD_ERRORS
from django.forms import ModelForm

class ArticleForm(ModelForm):
    class Meta:
        error_messages = {
            NON_FIELD_ERRORS: {
                'unique_together': "%(model_name)s's %(field_labels)s are not unique.",
            }
        }

您可以ModelForm meta如上所述更新您的课程并创建自定义错误消息。


推荐阅读