[PYTHON] Alternative zu Djangos Befehl dumpdata

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

Alternative zu Djangos Befehl dumpdata
Poesie - Eine Alternative zu Pipenv
Befehl zum Generieren von QR-Code
So bedienen Sie GeoIp2 von Django
[systemd] Befehl zum Löschen des Dienstes
Einführung in den Befehl vi (Hinweis)
Befehl zum Erstellen von Linux Live USB
Im Python-Befehl zeigt Python auf Python3.8
Verwendung von MBDyn (Befehlseinstellung)
Befehl [linux] kill, um den Prozess abzubrechen
Führen Sie das Skript mit dem Befehl admin von Django aus
[Django] Befehl zum Ausgeben von QuerySet an csv
Fügen Sie den benutzerdefinierten Befehlen von Django Parameter hinzu
Eine Alternative zu "Pause" in Python