Вот сериализатор, который удаляет все метаданные (рк, модели) из сериализованного вывода и перемещает поля на верхний уровень каждого объекта.Протестировано в django 1.5
from django.core.serializers import json
class CleanSerializer(json.Serializer):
def get_dump_object(self, obj):
return self._current
Serializer = CleanSerializer
Редактировать:
При переносе моего приложения на более старую версию django (вызванную сменой хостинг-провайдера) вышеуказанный сериализатор перестал работать.Ниже приведен сериализатор, который обрабатывает ссылочные версии:
import logging
import django
from django.core.serializers import json
from django.utils.encoding import smart_unicode
class CleanSerializer148(json.Serializer):
def end_object(self, obj):
current = self._current
current.update({'pk': smart_unicode(obj._get_pk_val(),
strings_only=True)})
self.objects.append(current)
self._current = None
class CleanSerializer151(json.Serializer):
def get_dump_object(self, obj):
self._current['pk'] = obj.pk
return self._current
if django.get_version() == '1.4.8':
CleanSerializer = CleanSerializer148
else:
CleanSerializer = CleanSerializer151
Serializer = CleanSerializer