summaryrefslogtreecommitdiff
path: root/django/core/serializers/python.py
diff options
context:
space:
mode:
authorJannis Leidel <jannis@leidel.info>2012-02-04 18:27:07 +0000
committerJannis Leidel <jannis@leidel.info>2012-02-04 18:27:07 +0000
commit62efdcb037da9df8fb1a3a29cabb517d49288b5d (patch)
treee5dbfb6a3eb547fb1dbc8384bc73ce9f1a9f32a3 /django/core/serializers/python.py
parent928f605efe0af2362c368e4bd9c280c7620abf3f (diff)
Fixed #17602 -- Stopped the XML serializer from doing unneeded queries. Thanks, gnosek.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17439 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/core/serializers/python.py')
-rw-r--r--django/core/serializers/python.py18
1 files changed, 6 insertions, 12 deletions
diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py
index a68ea21f78..6cdfc9f240 100644
--- a/django/core/serializers/python.py
+++ b/django/core/serializers/python.py
@@ -45,18 +45,12 @@ class Serializer(base.Serializer):
self._current[field.name] = field.value_to_string(obj)
def handle_fk_field(self, obj, field):
- related = getattr(obj, field.name)
- if related is not None:
- if self.use_natural_keys and hasattr(related, 'natural_key'):
- related = related.natural_key()
- else:
- 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 = smart_unicode(getattr(related, field.rel.field_name), strings_only=True)
- self._current[field.name] = related
+ if self.use_natural_keys and hasattr(field.rel.to, 'natural_key'):
+ related = getattr(obj, field.name)
+ value = related.natural_key()
+ else:
+ value = getattr(obj, field.get_attname())
+ self._current[field.name] = value
def handle_m2m_field(self, obj, field):
if field.rel.through._meta.auto_created: