Как создать валидатор на полях формы в модельных формах

Как проверить название поля модели? Что, если, например, каждое использование поля заголовка начинается со слова "Блог".

models.py

class TitleAbstract(models.Model):
    title = models.CharField(max_length=255)
    class Meta:
        abstract = True

class Blog(TitleAbstract):
    ..............

forms.py

class BlogForm(forms.ModelForm):
     class Meta:
         model = Blog

views.py

class BlogCreateView(CreateView):
     model = Blog
     action = 'created'

1 ответ

Решение

validators.py

from django.core.exceptions import ValidationError

def validate_title(value):
    if not value.lower().startswith(u'blog'):
        msg = u"Enter a value starting with 'Blog'"
        raise ValidationError(msg)

forms.py

class BlogForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
    super(BlogForm, self).__init__(*args, **kwargs)
    self.fields['title'].validators = [validate_title]

    class Meta:
        model = Blog

views.py

class BlogCreateView(CreateView):
    model = Blog
    action = 'created'
    form_class = BlogForm
Другие вопросы по тегам