From 391b0ae21b29212764c4f3d079187d07228bb743 Mon Sep 17 00:00:00 2001 From: Tymur Maryokhin Date: Tue, 3 Mar 2015 17:02:12 +0100 Subject: [PATCH] Call default.set_context() only on create. Refs #2619. --- rest_framework/fields.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index c327f11bc..a80862e8c 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -103,7 +103,7 @@ def set_value(dictionary, keys, value): dictionary[keys[-1]] = value -class CreateOnlyDefault: +class CreateOnlyDefault(object): """ This class may be used to provide default values that are only used for create operations, but that do not return any value for update @@ -114,7 +114,7 @@ class CreateOnlyDefault: def set_context(self, serializer_field): self.is_update = serializer_field.parent.instance is not None - if callable(self.default) and hasattr(self.default, 'set_context'): + if callable(self.default) and hasattr(self.default, 'set_context') and not self.is_update: self.default.set_context(serializer_field) def __call__(self): @@ -130,7 +130,7 @@ class CreateOnlyDefault: ) -class CurrentUserDefault: +class CurrentUserDefault(object): def set_context(self, serializer_field): self.user = serializer_field.context['request'].user