diff options
| author | Tom Christie | 2013-03-22 22:39:45 +0000 |
|---|---|---|
| committer | Tom Christie | 2013-03-22 22:39:45 +0000 |
| commit | 3f79a9a3d3e7692d90476f8a6907957b47aab821 (patch) | |
| tree | 3ffb611d491de8a6e66ad066fda025ab5a3786e1 /rest_framework/serializers.py | |
| parent | 9fdb661c593a3c042d7aa2cd4608ae5b81f8109c (diff) | |
| download | django-rest-framework-3f79a9a3d3e7692d90476f8a6907957b47aab821.tar.bz2 | |
one-one writable nested modelserializers
Diffstat (limited to 'rest_framework/serializers.py')
| -rw-r--r-- | rest_framework/serializers.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 6aca2f57..26c34044 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -753,7 +753,16 @@ class ModelSerializer(Serializer): if getattr(obj, '_related_data', None): for accessor_name, related in obj._related_data.items(): - setattr(obj, accessor_name, related) + if related is None: + previous = getattr(obj, accessor_name, related) + if previous: + previous.delete() + elif isinstance(related, models.Model): + fk_field = obj._meta.get_field_by_name(accessor_name)[0].field.name + setattr(related, fk_field, obj) + self.save_object(related) + else: + setattr(obj, accessor_name, related) del(obj._related_data) |
