2013-09-03 2 views
2

Документация 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]) 
+2

Второй случай правильный, и это путь. И покажите нам сообщение stacktrace или сообщение об ошибке и вставьте его здесь. –

+0

попробуйте 'self.validate_name' в первом случае. – karthikr

ответ

3

объявляя свой метод проверки в файле модели, но за пределами вашего объявления класса (например, 2) должны работать нормально

вы можете получить NameError, если вы используете функцию внутри другого файла без импортируемое метод сначала

Смежные вопросы