summaryrefslogtreecommitdiff
path: root/django/core/serializers/python.py
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2012-05-26 11:43:37 +0200
committerClaude Paroz <claude@2xlibre.net>2012-05-26 11:43:37 +0200
commit3b5083bee5e96539dec599106aece9889e70ce05 (patch)
treebd658e62786802c0fc3daf652bf5fc18b898ef0b /django/core/serializers/python.py
parentc2139bbcefb2249bdf1012f843f7daa6a5806922 (diff)
downloaddjango-3b5083bee5e96539dec599106aece9889e70ce05.tar.gz
Fixed #5423 -- Made dumpdata output one row at a time.
This should prevent storing all rows in memory when big sets of data are dumped. See ticket for heroic contributors.
Diffstat (limited to 'django/core/serializers/python.py')
-rw-r--r--django/core/serializers/python.py13
1 files changed, 8 insertions, 5 deletions
diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py
index 195bf11d24..49120434eb 100644
--- a/django/core/serializers/python.py
+++ b/django/core/serializers/python.py
@@ -27,13 +27,16 @@ class Serializer(base.Serializer):
self._current = {}
def end_object(self, obj):
- self.objects.append({
- "model" : smart_unicode(obj._meta),
- "pk" : smart_unicode(obj._get_pk_val(), strings_only=True),
- "fields" : self._current
- })
+ self.objects.append(self.get_dump_object(obj))
self._current = None
+ def get_dump_object(self, obj):
+ return {
+ "pk": smart_unicode(obj._get_pk_val(), strings_only=True),
+ "model": smart_unicode(obj._meta),
+ "fields": self._current
+ }
+
def handle_field(self, obj, field):
value = field._get_val_from_obj(obj)
# Protected types (i.e., primitives like None, numbers, dates,