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])
答案 0 :(得分:3)
在模型文件中声明验证方法,但在类声明之外(示例2)应该可以正常工作
如果您在另一个文件中使用该函数而未先导入方法
,则可能会收到NameError