diff options
author | Claude Paroz <claude@2xlibre.net> | 2012-05-26 11:43:37 +0200 |
---|---|---|
committer | Claude Paroz <claude@2xlibre.net> | 2012-05-26 11:43:37 +0200 |
commit | 3b5083bee5e96539dec599106aece9889e70ce05 (patch) | |
tree | bd658e62786802c0fc3daf652bf5fc18b898ef0b /django/core/serializers/python.py | |
parent | c2139bbcefb2249bdf1012f843f7daa6a5806922 (diff) | |
download | django-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.py | 13 |
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, |