Как создать валидатор на полях формы в модельных формах
Как проверить название поля модели? Что, если, например, каждое использование поля заголовка начинается со слова "Блог".
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