在哪里放置验证器用于Django模型字段?

时间:2013-09-03 20:13:57

标签: django django-models

Django文档显示了example模型字段的自定义验证器。但是,doc没有说明将验证器函数放在代码中的位置。如果我将它放在我们的models.py文件中的任何一个位置(如下所示),当我尝试启动服务器时出现此错误:

NameError: name 'validate_name' is not defined

此validate_name函数的正确位置在哪里?感谢。

# models.py, example 1
from django.db import models
from django.core.exceptions import ValidationError

class CommentModel(models.Model):
    # I get the error if I define the validator here
    def validate_name(value):
        if value == '':
            raise ValidationError(u'%s cannot be left blank' % value)

    name = models.CharField(max_length=25, validators=[validate_name])


# models.py, example 2
from django.db import models
from django.core.exceptions import ValidationError

# I also get the error if I define the validator here
def validate_name(value):
    if value == '':
        raise ValidationError(u'%s cannot be left blank' % value)

class CommentModel(models.Model):
    name = models.CharField(max_length=25, validators=[validate_name])

1 个答案:

答案 0 :(得分:3)

在模型文件中声明验证方法,但在类声明之外(示例2)应该可以正常工作

如果您在另一个文件中使用该函数而未先导入方法

,则可能会收到NameError