aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/serializers.py
diff options
context:
space:
mode:
authortoran billups2012-12-15 20:55:36 -0600
committertoran billups2012-12-15 20:55:36 -0600
commit008dafce178181855d66981cfacb908d013c5d1d (patch)
tree4c53d37f800b1b35968710207ad4df365b15876e /rest_framework/serializers.py
parent1d24d1fc5928d32372e700907aa71cf887b16ba9 (diff)
downloaddjango-rest-framework-008dafce178181855d66981cfacb908d013c5d1d.tar.bz2
ManyPrimaryKeyRelatedField now supports create for one-to-many rel
Diffstat (limited to 'rest_framework/serializers.py')
-rw-r--r--rest_framework/serializers.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py
index 8026205e..276a7db7 100644
--- a/rest_framework/serializers.py
+++ b/rest_framework/serializers.py
@@ -496,12 +496,19 @@ class ModelSerializer(Serializer):
Restore the model instance.
"""
self.m2m_data = {}
+ self.related_data = {}
if instance is not None:
for key, val in attrs.items():
setattr(instance, key, val)
return instance
+ # Related relations
+ for (obj, model) in self.opts.model._meta.get_all_related_objects_with_model():
+ field_name = obj.field.related_query_name()
+ if field_name in attrs:
+ self.related_data[field_name] = attrs.pop(field_name)
+
# Reverse relations
for (obj, model) in self.opts.model._meta.get_all_related_m2m_objects_with_model():
field_name = obj.field.related_query_name()
@@ -532,6 +539,11 @@ class ModelSerializer(Serializer):
setattr(self.object, accessor_name, object_list)
self.m2m_data = {}
+ if getattr(self, 'related_data', None):
+ for accessor_name, object_list in self.related_data.items():
+ setattr(self.object, accessor_name, object_list)
+ self.related_data = {}
+
return self.object