From 5cfea7b9336adc0e2221a55d572b31e21ddeeec2 Mon Sep 17 00:00:00 2001 From: Dan Stephenson Date: Fri, 6 Sep 2013 17:03:20 +0100 Subject: [PATCH] fix to m2m object persistence --- rest_framework/serializers.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 3958b0f4a..8169d874b 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -898,14 +898,16 @@ class ModelSerializer(Serializer): obj.save(**kwargs) if getattr(obj, '_m2m_data', None): - for accessor_name, object_list in obj._m2m_data.items(): - for m2m_object in object_list: - for field in m2m_object.__dict__.keys(): - if not field == 'id': - attr = getattr(m2m_object, field) - setattr(m2m_object, field, m2m_object.__dict__[field]) - m2m_object.save() - del(obj._m2m_data) + if hasattr(obj._m2m_data, '__iter__'): + for accessor_name, object_list in obj._m2m_data.items(): + if object_list: + for m2m_object in object_list: + for field in m2m_object.__dict__.keys(): + if not field == 'id': + attr = getattr(m2m_object, field) + setattr(m2m_object, field, m2m_object.__dict__[field]) + m2m_object.save() + del(obj._m2m_data) if getattr(obj, '_related_data', None): for accessor_name, related in obj._related_data.items():