python - 如何使用 django 序列化程序验证大写字段
问题描述
我正在编写 API,并且在调试时注意到以下错误。以下代码不验证状态字段
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
但是,当我像这样将“状态”一词更改为“状态”时:
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
一切正常。谁能告诉我为什么它会这样工作,我该如何验证“状态”大写字段?谢谢
解决方案
以下代码不验证状态字段。
它期望验证器被命名为,因此也是大写的:validate_Status
S
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
推荐阅读
- c++ - 如何重新制作现有的随机数组以具有唯一元素(有限制)
- string - Elixir - 如何检查字符串是否包含文本或是否为数字(“453”)
- javascript - 打开街道地图,并回调 OpenLayer
- angular - 类型“any[]”上不存在属性“id”
- android - 无法在 Android 项目中加载预构建的 OpenSSL 库
- c - 与人类级别的方法相比,代码进行了更多的交换
- flutter - 在飞镖中使用三点运算符扩展列表
- javascript - 将 Google 工作表日期与 Google 日历活动日期进行比较
- ios - WebFriverAgentRunner 构建无法监听 USB
- angular - 反应形式的数据绑定