isalpha()在自定义Django验证器下返回False,无论字符串包含数字还是n

2024-09-27 00:22:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试对Django CharField模型字段使用自定义验证。我在查名字里有没有数字。如果是,则引发ValidationError。我使用if name.isalpha() is False: raise ValidationError行。出于某种原因,无论字符串中是否存在数字,这都等同于False。我检查以确保name是我期望的值,并且它确实是一个字符串。这是我的密码:

models.py

name = models.CharField(validators=[validate_name], max_length=100, default='', unique=True)

validation.py

from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as _


def validate_name(name):
    print(name.isalpha())

    if name.isalpha is False:
        raise ValidationError(
            _('Name can only contain letters A-Z. Not numbers.'),
            params={'name': name},
        )

Tags: django字符串namefrompyfalseifis
1条回答
网友
1楼 · 发布于 2024-09-27 00:22:40

更改为

if name.isalpha() is False:
        raise ValidationError(
            _('Name can only contain letters A-Z. Not numbers.'),
            params={'name': name},
        )

此外,您还可以使用RegexValidator保存一些代码行

from django.core.validators import RegexValidator

letters_only = RegexValidator(r'^[a-zA-Z ]*$', _('Only letters are allowed.'))

相关问题 更多 >

    热门问题