Django / DRF在 validate方法中抛出ValidationError,并将其绑定到某个字段
我有一个序列化器:
class MySerializer(serializers.ModelSerializer):
name = serailizer.CharField()
class Meta:
fields = [
"name"
]
我想在名称包含字母“W”时抛出一个ValidationError
于是我这样写:
class InvalidNameError(serializers.ValidationError):
default_detail = _("This name invalid")
default_code = "invalid_name"
class MySerializer(serializers.ModelSerializer):
name = serailizer.CharField()
def validate_name(self, value: str):
if "W" in value:
raise InvalidName
return value
class Meta:
fields = [
"name"
]
但我希望它在 validate 中处理
class InvalidNameError(serializers.ValidationError):
default_detail = _("This name invalid")
default_code = "invalid_name"
class MySerializer(serializers.ModelSerializer):
name = serailizer.CharField()
def validate(self, attrs):
data = super().validate(attr)
if "W" in data.get("name", ""):
raise InvalidName
return data
class Meta:
fields = [
"name"
]
但在第二种方式中,它被标记为一个 non_field_errors,我想在 validate 进行处理,并在错误中仍然把它标记为 name。
解决方案
与其在validate函数中进行:
raise InvalidName
你可以这样做:
raise serializers.ValidationError({"name": InvalidNameError().detail})
下面是一个解释它的文档 文档。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。