From 4b4f1bfd4ae7af86a0ada911020bf262eb2a075e Mon Sep 17 00:00:00 2001 From: kakulukia Date: Wed, 1 Oct 2014 14:58:37 +0200 Subject: [PATCH 1/2] Update fields.py --- rest_framework/fields.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index bbe71ef42..9b54dd271 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -994,7 +994,7 @@ class ImageField(FileField): super(ImageField, self).__init__(*args, **kwargs) def to_native(self, value): - if self.show_url: + if value and self.show_url: return value.url return value.name From 553cf5540ed0d51e584a9a2012ce1f8dd4a01ef2 Mon Sep 17 00:00:00 2001 From: kakulukia Date: Mon, 13 Oct 2014 16:09:45 +0200 Subject: [PATCH 2/2] allow to work like in django admin which also tries to call the given methon on the object itself try to call the given serializer method on the serializer itself and on the model in that order --- rest_framework/fields.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 9b54dd271..9e709e95c 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -1047,5 +1047,10 @@ class SerializerMethodField(Field): super(SerializerMethodField, self).__init__(*args, **kwargs) def field_to_native(self, obj, field_name): - value = getattr(self.parent, self.method_name)(obj) + if hasattr(self.parent, self.method_name): + method = getattr(self.parent, self.method_name) + value = method(obj) + else: + method = getattr(obj, self.method_name) + value = method() return self.to_native(value)