如何使用Django Serializers验证首字母大写的Status字段
问题原因
Django REST Framework(DRF)的单字段自定义验证方法遵循严格的命名规则:必须为validate_<实际字段名>,命名完全匹配才会被自动触发执行。
你原有代码中字段定义为以大写字母开头的Status,但验证方法名为validate_status,方法名后缀为小写的status,与实际字段名不匹配,DRF无法识别这是Status字段的验证方法,因此验证逻辑不会执行。
当你把字段名修改为小写的status后,方法名后缀与字段名完全一致,验证逻辑就可以正常触发。
实现首字母大写Status字段验证的方案
直接将验证方法名的后缀修改为与字段名完全一致即可,示例代码如下:
class DocumentSalesforceSerializer(serializers.Serializer): AccountId = serializers.CharField(required=True) ContactId = serializers.CharField(required=True) Status = serializers.CharField(required=True) StartDate = serializers.CharField(required=True) EndDate = serializers.CharField(required=True, allow_blank=True) Subject = serializers.CharField(required=True) def validate_Status(self, Status): if Status not in ("New", "In Progress", "On Hold", "Completed", "Closed", "Cannot Complete", "Canceled"): raise serializers.ValidationError("Invalid Status") return Status
内容的提问来源于stack exchange,提问作者carlos de la morena
相关产品推荐
相关产品推荐

