如何禁止特定字符输入到 CharField

How to disallow specific character input to a 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 做一些事情,以便用户无法 post 标题中带有特殊字符的表单。我究竟该如何做到这一点?

您可以使用 validators=… parameter [Django-doc] 添加验证器并使用反 regex:

from django.core.validators import RegexValidator

class Article(models.Model):
    title = models.CharField(
        max_length=100,
        validators=[<strong>RegexValidator('[+-/%]', inverse_match=True)</strong>]
    )
    # …