Django 模型层上的数据验证?

Django 模型层上的数据验证?,django,django-models,django-forms,django-views,Django,Django Models,Django Forms,Django Views,在没有modelform的情况下,如何在Django中验证模型层上的数据? 我必须重写某些函数吗? 假设我在一个模型类中有一个CharField,我应该重写哪个函数来验证输入的数据类型 我是django的新手。如果问题不具体,很抱歉 您可以向模型字段添加验证器:从文档: from django.db import models from django.core.exceptions import ValidationError def validate_even(value): if

在没有modelform的情况下,如何在Django中验证模型层上的数据? 我必须重写某些函数吗? 假设我在一个模型类中有一个CharField,我应该重写哪个函数来验证输入的数据类型


我是django的新手。如果问题不具体,很抱歉

您可以向模型字段添加验证器:从文档:

from django.db import models
from django.core.exceptions import ValidationError

def validate_even(value):
    if value % 2 != 0:
        raise ValidationError('%s is not an even number' % value)

class MyModel(models.Model):
    even_field = models.IntegerField(validators=[validate_even])
可用于在模型层上提供数据验证。

根据Django文件:

Model.clean()

此方法应用于提供自定义模型 验证,并根据需要修改模型上的属性

应重写此方法以对您的服务器执行自定义验证 模型

要验证不同类型的字段,可以使用

validator
是一个可调用函数,它接受一个值并引发一个
ValidationError
如果它不符合某些条件。验证器可以是 用于在不同类型的验证之间重复使用验证逻辑 田地

使用
验证器与重写
Model.clean()之间的区别:

验证程序只验证输入,不返回所需的格式。如果输入无效,它只会引发错误


Clean方法都会验证并返回一个值,该值可能是根据需求稍微修改的值。

您可以覆盖models save函数