Как запретить ввод определенных символов в поле CharField
У меня есть модель, в которой я хочу запретить ввод специальных символов (+,-,/,% и т.д.) в поле заголовка:
class Article(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.title
Могу ли я сделать это в самой модели? Или мне нужно что-то сделать с forms.py, чтобы пользователи не могли опубликовать форму с особыми символами в заголовке. Как именно я могу этого добиться?
Вы можете добавить валидатор с параметром validators=… [Django-doc] и работать с инверсным regex:
from django.core.validators import RegexValidator
class Article(models.Model):
title = models.CharField(
max_length=100,
validators=[RegexValidator('[+-/%]', inverse_match=True)]
)
# …