Прежде всего, вы используете какие-либо пользовательские / сторонние поля?
Хотя, если вы это сделали и дампданные django не смогли его сериализовать, это
Я бы поднял исключение, я полагаю. Во всяком случае, так как в прошлый раз я проверил там
не было достаточной документации для написания собственного сериализатора django,
Вот пример для сериализации пользовательского UUIDField:
from django.core.serializers.python import Serializer as PythonSerializer
from django.core.serializers.json import DjangoJSONEncoder
class CustomJSONEncoder(DjangoJSONEncoder):
def default(self, obj):
if isinstance(obj, uuid.UUID):
return obj.hex
return super(CustomJSONEncoder, self).default(obj)
class Serializer(PythonSerializer):
internal_use_only = False
def end_serialization(self):
json.dump(self.objects, self.stream, cls=CustomJSONEncoder, **self.options)
def getvalue(self):
if callable(getattr(self.stream, 'getvalue', None)):
return self.stream.getvalue()
Затем в вашем урегулировании добавьте
SERIALIZATION_MODULES = { 'myjson' : 'path.to.my.module.with.serializer' }
Тогда из своей оболочки вы можете сделать
python manage.py dumpdata --format myjson > myfixtures.myjson # the extension is important!
Вы можете загрузить его с помощью
python manage.py loaddata myfixtures.myjson
Как ни странно loaddata
не принимает параметр "format", такой как dumpdata. Это решает формат, основанный на расширении файла. Тем не менее я не мог найти способ
подключите мой пользовательский кодировщик, поэтому мне пришлось написать «новый» сериализатор: (
Это то, что я делал несколько месяцев назад, когда мне нужно было написать собственный сериализатор и
Мне пришлось копаться в исходном коде Django, чтобы понять это, так как
официальные документы не имели ничего по этому вопросу. Я надеюсь, что это поможет.