Django模型字段的验证器放在哪里?

Django模型字段的验证器放在哪里?,django,django-models,Django,Django Models,Django文档显示了模型字段的自定义验证器的示例。但是,文档没有说明在代码中将验证器函数放在哪里。如果我将其放在models.py文件的任意位置(如下所示),则在尝试启动服务器时会出现以下错误: NameError: name 'validate_name' is not defined 这个validate_name函数的正确位置在哪里?谢谢 # models.py, example 1 from django.db import models from django.core.excep

Django文档显示了模型字段的自定义验证器的示例。但是,文档没有说明在代码中将验证器函数放在哪里。如果我将其放在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])

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


如果您在另一个文件中使用函数而没有首先导入方法,则可能会出现名称错误

第二种情况是正确的,这就是方法。向我们显示stacktrace或错误消息,并将其粘贴到此处。在第一种情况下,请尝试
self。验证\u name