Django charfield的自定义验证程序不会引发任何错误

Django charfield的自定义验证程序不会引发任何错误,django,validation,model,field,Django,Validation,Model,Field,我已经做了一个验证器,它应该检查来自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_leng

我已经做了一个验证器,它应该检查来自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并输入错误的格式时,不会发生任何事情,也不会出现错误消息。为什么?

函数返回:

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

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

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

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

def postnvali(value):
    
    if not value.isdigit():
        raise ValidationError(_('postnummer måste vara siffror'))
def postnvali(值):
如果不是值。isdigit():

raise ValidationError('postnummer måste vara siffror'))
错误的格式是什么样子的?你能解释一下你想验证什么吗?你是对的,我没看到。