简体   繁体   English

如何使用 django 序列化程序验证大写字段

[英]How to validate a field with uppercase with django serializers

I am programming an API and I have noticed the following error when debugging.我正在编写 API,并且在调试时注意到以下错误。 The following code does not validate the Status field以下代码不验证状态字段

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

But, when I change the word "Status" to "status" like this:但是,当我像这样将“状态”一词更改为“状态”时:

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

Everything is working perfectly fine.一切正常。 Can anyone tell me why is it working like that and how can I do to validate the "Status" uppercase field?谁能告诉我为什么它会这样工作,我该如何验证“状态”大写字段? Thanks谢谢

The following code does not validate the Status field.以下代码不验证状态字段。

It expects that the validator is named validate_ S tatus , so with an uppercase S as well:据预计,验证名为validate_ S tatus ,所以用一个大写的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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM