У меня были похожие проблемы, поэтому я взял код, который делал ранее, и улучшил его.Это фактически закончилось в полной структуре сериализации Python SpitEat.Вы можете скачать пробную версию здесь .Документация еще не очень хорошая, поэтому вот код, который вы должны использовать для сериализации вашей вещи:
>>> from spiteat.djangosrz import DjangoModelSrz #you should actually put spiteat in your path first
>>> Model1Srz = DjangoModelSrz.factory(Model1)
>>> srz_instance = Model1Srz(some_obj_you_want_to_serialize)
>>> srz_instance.spit()
... {
... 'pk': <a_pk>,
... 'id': <an_id>,
... 'name': <a_name>,
... 'child': {
... 'pk': <another_pk>,
... 'id': <another_id>,
... 'field1': <a_value>,
... 'field2': <another_value>
... }
... }
Итак, полная, глубокая сериализация.Вы можете настроить вещи (выбрать, какие поля включены и т. Д. ... Но это еще не проверено и плохо документировано).Документ станет лучше в ближайшие дни, как и код, так что вы можете начать использовать его, не опасаясь, что поддержки не будет!
Конечно, как только ваш объект сериализован, просто используйте json
как:
>>> import json
>>> json_srz = json.dumps(srz_instance.spit())
И у вас есть то, что вы пришли!