diff options
| author | Tom Christie | 2012-09-28 15:54:00 +0100 |
|---|---|---|
| committer | Tom Christie | 2012-09-28 15:54:00 +0100 |
| commit | 9f71f8e618555d888fff8edd322c440b49f331bc (patch) | |
| tree | eb0672888424a454678f0fbf8eab9cabac394725 /rest_framework/serializers.py | |
| parent | 4ebd701be74fbb1f44f7763f7ab9e19f6483ac96 (diff) | |
| download | django-rest-framework-9f71f8e618555d888fff8edd322c440b49f331bc.tar.bz2 | |
Fix broken bits of generic views
Diffstat (limited to 'rest_framework/serializers.py')
| -rw-r--r-- | rest_framework/serializers.py | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index bdb0f10a..9cbdb9de 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -231,6 +231,9 @@ class BaseSerializer(Field): """ Serialize objects -> primatives. """ + if isinstance(obj, DeserializedObject): + obj = obj.object + if isinstance(obj, dict): return dict([(key, self.to_native(val)) for (key, val) in obj.items()]) @@ -295,11 +298,7 @@ class ModelSerializer(RelatedField, Serializer): """ Return all the fields that should be serialized for the model. """ - if serialize: - cls = obj.__class__ - else: - cls = self.opts.model - + cls = self.opts.model opts = get_concrete_model(cls)._meta pk_field = opts.pk while pk_field.rel: @@ -342,6 +341,11 @@ class ModelSerializer(RelatedField, Serializer): """ Restore the model instance. """ + if instance: + for key, val in attrs.items(): + setattr(instance, key, val) + return DeserializedObject(instance) + m2m_data = {} for field in self.opts.model._meta.many_to_many: if field.name in attrs: |
