Die json-Ausgabe von djangos manage.py dumpdata war nicht gut, da Japanisch maskiert wurde und die Feldnamen im Modell nicht in Ordnung waren. Deshalb habe ich stattdessen interaktiv verwendet. (Der Modellname unterscheidet sich beispielsweise vom tatsächlichen Namen.)
>>> import json
>>> from collections import OrderedDict
>>> from django.core.serializers.json import DjangoJSONEncoder
>>> from account.models import User
>>> users = list(User.objects.all().order_by('id'))
>>> field_names = ["name", "birthday", "description"]
>>> a = [OrderedDict([("pk", user.pk), ("model", "account.user"), ("fields", OrderedDict([(name, getattr(user, name)) for name in field_names]))]) for user in users]
>>> print json.dumps(a, cls=DjangoJSONEncoder, indent=2)
Der Punkt ist
--Json.dump von OrderedDict behält die Bestellung bei --cls = DjangoJSONEncoder ist erforderlich, um datetime auszugeben
Um.
Der Feldname sollte den Attributen des Modells entnommen werden, damit er allgemeiner gestaltet werden kann.
(Zusatz)
Japanisch ist entkommen
Schließlich wird dieses Problem ad hoc gelöst, indem die Ausgabe einmal in die Shell von Python 3 eingefügt wird.
Recommended Posts