Python Django rest框架不能与正则表达式验证器一起工作

Python Django rest框架不能与正则表达式验证器一起工作,python,django,django-rest-framework,Python,Django,Django Rest Framework,在我的模型中,我有一个字段 address = models.CharField(_('address'), blank=True, max_length=42, editable=False, validators=[validators.RegexValidator(regex='^0x[a-fA-F0-9]{40}$')]) 但当我尝试应用超过42个符号的值时,我得到django错误: 值太长,无法更改类型字符(42)

在我的模型中,我有一个字段

address = models.CharField(_('address'), blank=True, max_length=42, editable=False,
                                   validators=[validators.RegexValidator(regex='^0x[a-fA-F0-9]{40}$')])
但当我尝试应用超过42个符号的值时,我得到django错误:

值太长,无法更改类型字符(42)

例如,当我设置值:
test
时,它通过了验证(但不应该通过)

我的序列化程序很简单:

class KYCSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = '__all__'

如果
max_length=42,
,为什么不呢?@BearBrown您是什么意思?您是如何检查是否可以将值设置为
test
?通过调用
Model.clean\u fields()
运行验证程序。从3.0版开始,Django Rest Framework就不再为您运行它,因此您必须在序列化程序
validate()
函数中显式地运行它。DRF将从模型中获取验证器,并在验证期间使用它们。不知何故,您并没有提供问题中的所有内容,而且有些东西阻止DRF获取正则表达式或根据正则表达式进行验证。如果
max_length=42,
,为什么不呢?@BearBrown您的意思是什么?您是如何检查是否可以将值设置为
test
?通过调用
Model.clean\u fields()
运行验证程序。从3.0版开始,Django Rest Framework就不再为您运行它,因此您必须在序列化程序
validate()
函数中显式地运行它。DRF将从模型中获取验证器,并在验证期间使用它们。不知何故,您并没有提供问题中的所有内容,有些东西阻止了DRF获取正则表达式或对其进行验证。