From 82d955d345ceeca5341f044b16c8847e26068599 Mon Sep 17 00:00:00 2001 From: Andreas Backx Date: Mon, 1 Aug 2016 20:26:04 +0200 Subject: [PATCH] Fix ModelSerializer.get_validators with Meta property. The Meta subclass is sometimes a Field class and has the property `validators`. Properties require an instance otherwise the property object is returned which will result in an error when trying `validators[:]`. --- rest_framework/serializers.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index d5e6b66ed..30b2ef7ad 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -1372,9 +1372,14 @@ class ModelSerializer(Serializer): Determine the set of validators to use when instantiating serializer. """ # If the validators have been declared explicitly then use that. - validators = getattr(getattr(self, 'Meta', None), 'validators', None) - if validators is not None: - return validators[:] + meta = getattr(self, 'Meta', None) + if meta is not None: + validators = getattr(meta, 'validators', None) + if isinstance(validators, property): + validators = getattr(meta(), 'validators', None) + + if validators is not None: + return validators[:] # Otherwise use the default set of validators. return (