summaryrefslogtreecommitdiff
path: root/django/core/serializers
diff options
context:
space:
mode:
authorMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2007-05-29 13:09:48 +0000
committerMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2007-05-29 13:09:48 +0000
commitddae2ecfe42a4135850a435e1eefc79dfecaa062 (patch)
treed6d1e432938cf2fa3594264a7ca287c465e5b201 /django/core/serializers
parentfa1a0532d35ee5ff342c19821ad290ad48771aa4 (diff)
unicode: Merged from trunk up to [5380].
git-svn-id: http://code.djangoproject.com/svn/django/branches/unicode@5381 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/core/serializers')
-rw-r--r--django/core/serializers/python.py7
-rw-r--r--django/core/serializers/xml_serializer.py8
2 files changed, 13 insertions, 2 deletions
diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py
index 2eb2beeb48..c0d2efab50 100644
--- a/django/core/serializers/python.py
+++ b/django/core/serializers/python.py
@@ -38,7 +38,12 @@ class Serializer(base.Serializer):
def handle_fk_field(self, obj, field):
related = getattr(obj, field.name)
if related is not None:
- related = getattr(related, field.rel.field_name)
+ if field.rel.field_name == related._meta.pk.name:
+ # Related to remote object via primary key
+ related = related._get_pk_val()
+ else:
+ # Related to remote object via other field
+ related = getattr(related, field.rel.field_name)
self._current[field.name] = related
def handle_m2m_field(self, obj, field):
diff --git a/django/core/serializers/xml_serializer.py b/django/core/serializers/xml_serializer.py
index 35f18a8589..50bce929b3 100644
--- a/django/core/serializers/xml_serializer.py
+++ b/django/core/serializers/xml_serializer.py
@@ -83,7 +83,13 @@ class Serializer(base.Serializer):
self._start_relational_field(field)
related = getattr(obj, field.name)
if related is not None:
- self.xml.characters(smart_unicode(getattr(related, field.rel.field_name)))
+ if field.rel.field_name == related._meta.pk.name:
+ # Related to remote object via primary key
+ related = related._get_pk_val()
+ else:
+ # Related to remote object via other field
+ related = getattr(related, field.rel.field_name)
+ self.xml.characters(smart_unicode(related))
else:
self.xml.addQuickElement("None")
self.xml.endElement("field")