From cb67a15321ac2a0c2b9d8fab0245a85f731e3a38 Mon Sep 17 00:00:00 2001 From: nick van berckelaer Date: Sat, 9 May 2020 11:54:30 +0200 Subject: [PATCH] Add dynamic fetching of fields to validate --- rest_framework/serializers.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 8c2486bea..91cc09ec5 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -361,6 +361,12 @@ class Serializer(BaseSerializer, metaclass=SerializerMetaclass): if not field.write_only: yield field + def get_fields_to_validate(self, data): + """ + Override this method if you want more control over the fields you want to validate + """ + return self._writable_fields + def get_fields(self): """ Returns a dictionary of {field_name: field_instance}. @@ -466,7 +472,7 @@ class Serializer(BaseSerializer, metaclass=SerializerMetaclass): ret = OrderedDict() errors = OrderedDict() - fields = self._writable_fields + fields = self.get_fields_to_validate(data) for field in fields: validate_method = getattr(self, 'validate_' + field.field_name, None)