我做了一个验证器,它应该检查来自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'))