Naive implementation for the dotted sources for model serializer.

This commit is contained in:
Xavier Ordoquy 2014-02-03 15:52:25 +01:00
parent 117ac24ff1
commit d5dd3772e9

View File

@ -948,14 +948,20 @@ class ModelSerializer(Serializer):
# Update an existing instance... # Update an existing instance...
if instance is not None: if instance is not None:
for key, val in attrs.items(): 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: try:
setattr(instance, key, val) setattr(dest, keys[-1], val)
except ValueError: except ValueError:
self._errors[key] = self.error_messages['required'] self._errors[key] = self.error_messages['required']
# ...or create a new instance # ...or create a new instance
else: else:
instance = self.opts.model(**attrs) 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 # Any relations that cannot be set until we've
# saved the model get hidden away on these # saved the model get hidden away on these