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