簡體   English   中英

如何使用 django 序列化程序驗證大寫字段

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

我正在編寫 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_ 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