charfield 的自定义验证器不会引发任何错误
custom validator for charfield do not raise any error
我已经完成了一个验证器,它应该检查来自字符字段的输入:
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')
但是当使用管理员输入错误的格式时,没有任何反应,也没有错误信息。为什么?
函数str.isalnum(…)
returns:
Return True if all characters in S are alphanumeric.
这意味着字符可以是数字 (0-9),或 字母 (A-Za-z),但根据错误消息,您只想允许 位数 。因此,您应该使用函数 str.isdigit(…)
:
Return True if all characters in the string are digits and there is at least one character, False otherwise.
所以我们可以将验证器重写为:
def postnvali(value):
if not value<b>.isdigit()</b>:
raise ValidationError(_('postnummer måste vara siffror'))
我已经完成了一个验证器,它应该检查来自字符字段的输入:
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')
但是当使用管理员输入错误的格式时,没有任何反应,也没有错误信息。为什么?
函数str.isalnum(…)
returns:
Return True if all characters in S are alphanumeric.
这意味着字符可以是数字 (0-9),或 字母 (A-Za-z),但根据错误消息,您只想允许 位数 。因此,您应该使用函数 str.isdigit(…)
:
Return True if all characters in the string are digits and there is at least one character, False otherwise.
所以我们可以将验证器重写为:
def postnvali(value):
if not value<b>.isdigit()</b>:
raise ValidationError(_('postnummer måste vara siffror'))