charfield的自定义验证器不会引发任何错误



我做了一个验证器,它应该检查来自charfield的输入:

def postnvali(value):

if not value.isalnum():
raise ValidationError(_('postnummer måste vara siffror'))

它用于以下模型:

class Adress(Model):
street=CharField(max_length=100)
snumb=CharField(max_length=15)
town=CharField(max_length=100)
postn=CharField(max_length=5,validators=[postnvali])

def __str__(self):
return 'city: ' + self.town
class Meta:
ordering=('street','town')

但是当使用admin并输入错误的格式时,不会发生任何事情,也不会出现错误消息。为什么?

函数str.isalnum(…)返回:

如果S中的所有字符都是字母数字,则返回True。

这意味着字符可以是数字(0-9(,也可以是字母(A-Za-z(,但根据错误消息,您希望只允许数字。因此,您应该使用函数str.isdigit(…):

如果字符串中的所有字符都是数字并且至少有一个字符,则返回True,否则返回False。

因此我们可以将验证器重写为:

def postnvali(value):

if not value.isdigit():
raise ValidationError(_('postnummer måste vara siffror'))

相关内容

  • 没有找到相关文章

最新更新