Документация Django показывает example пользовательского валидатора для поля модели. Однако в документе не говорится, куда помещать функцию валидатора в ваш код. Если бы я положил его в свой файл models.py в любом месте (как показано ниже), я получаю эту ошибку, когда я пытаюсь запустить сервер:Где разместить валидатор для поля модели Django?
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])
Второй случай правильный, и это путь. И покажите нам сообщение stacktrace или сообщение об ошибке и вставьте его здесь. –
попробуйте 'self.validate_name' в первом случае. – karthikr