From d5dd3772e905f5e13c3b2666d84dd2065ecb639a Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Mon, 3 Feb 2014 15:52:25 +0100 Subject: [PATCH] Naive implementation for the dotted sources for model serializer. --- rest_framework/serializers.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 536b040bc..91436701e 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -948,14 +948,20 @@ class ModelSerializer(Serializer): # Update an existing instance... if instance is not None: for key, val in attrs.items(): + # TODO: check whether we need to do something about dotted paths + dest = instance + keys = key.split('.') + for related_instance in keys[:-1]: + dest = getattr(dest, related_instance) try: - setattr(instance, key, val) + setattr(dest, keys[-1], val) except ValueError: self._errors[key] = self.error_messages['required'] # ...or create a new instance else: instance = self.opts.model(**attrs) + # TODO: check whether we need to do something about dotted paths # Any relations that cannot be set until we've # saved the model get hidden away on these