I need to validate a payload json based on, say, fields A, B. But I don't want these to show in serializer.validated_data
I tried to override validated_data base class method.
class MySerializer(serializers.Serializer):
fieldA = ...
fieldB = ...
fieldC = ...
def validate_fieldA(self, fieldA):
# validate
def validate_fieldB(self, fieldB):
# validate
def validated_data(self):
data = super().validated_data()
exclude_fields = self.context.get('exclude_fields', [])
for field in exclude_fields:
# providing a default prevents a KeyError
# if the field does not exist
data.pop(field, default=None)
return data
Now when I try to access serializer.validated_data dict, it returns a method instead of deserialized dictionary.
<bound method MySerializer.validated_data of ....
How do I accomplish this correctly?
I think you should override "validate" method instead of "validated_data" method.
DRF official documentation