Как проверить поле с верхним регистром с помощью сериализаторов django

Я программирую API и при отладке заметил следующую ошибку. Следующий код не проверяет поле 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

Но, когда я меняю слово "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

Все работает совершенно нормально. Может ли кто-нибудь сказать мне, почему это работает так и как я могу сделать, чтобы проверить поле "Status" в верхнем регистре? Спасибо

Следующий код не проверяет поле 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
Вернуться на верх