From 63ea57642dd980ff07627964efd445986bc9fe58 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Tue, 12 Aug 2008 12:58:33 +0000 Subject: Fixed #8134 -- Corrected serialization of m2m fields with intermediate models. Thanks to Rock Howard for the report, and kire for the test case. git-svn-id: http://code.djangoproject.com/svn/django/trunk@8321 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/core/serializers/python.py | 5 +++-- django/core/serializers/xml_serializer.py | 9 +++++---- 2 files changed, 8 insertions(+), 6 deletions(-) (limited to 'django/core') diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py index cedab06be9..c129c068df 100644 --- a/django/core/serializers/python.py +++ b/django/core/serializers/python.py @@ -49,8 +49,9 @@ class Serializer(base.Serializer): self._current[field.name] = smart_unicode(related, strings_only=True) def handle_m2m_field(self, obj, field): - self._current[field.name] = [smart_unicode(related._get_pk_val(), strings_only=True) - for related in getattr(obj, field.name).iterator()] + if field.creates_table: + self._current[field.name] = [smart_unicode(related._get_pk_val(), strings_only=True) + for related in getattr(obj, field.name).iterator()] def getvalue(self): return self.objects diff --git a/django/core/serializers/xml_serializer.py b/django/core/serializers/xml_serializer.py index 667faf7c5e..04498db00c 100644 --- a/django/core/serializers/xml_serializer.py +++ b/django/core/serializers/xml_serializer.py @@ -100,10 +100,11 @@ class Serializer(base.Serializer): serialized as references to the object's PK (i.e. the related *data* is not dumped, just the relation). """ - self._start_relational_field(field) - for relobj in getattr(obj, field.name).iterator(): - self.xml.addQuickElement("object", attrs={"pk" : smart_unicode(relobj._get_pk_val())}) - self.xml.endElement("field") + if field.creates_table: + self._start_relational_field(field) + for relobj in getattr(obj, field.name).iterator(): + self.xml.addQuickElement("object", attrs={"pk" : smart_unicode(relobj._get_pk_val())}) + self.xml.endElement("field") def _start_relational_field(self, field): """ -- cgit v1.3