Ich habe mein Django-Modell serialisiert:
%Vor%und bekam diese Ausgabe:
%Vor%So können Sie sehen, ich habe pk="133":
Und jetzt will ich dies wieder in das django Modell deserialisieren und save () in die Datenbank, aber mit einem anderen pk, so dass es einen neuen Datensatz mit einer neuen ID erzeugen sollte.
Ich versuche, XML zu analysieren und pk mit:
zu ändernIn Django Serialisierung Artikel gibt es ein Beispiel, wie aus JSON mit null "pk" deserialisiert werden kann .
%Vor%(Es ist eigentlich für 0,96, aber ich gehe davon aus, dass es auch für 1. * funktionieren sollte)
In JSON kann pk also null sein, aber in XML beschwert es sich. Wie setze ich pk für XML auf null?
Danke
Sieht in Django wie ein Bug aus. Es gibt keine Möglichkeit, leeres (oder null / None) "pk" für serialisiertes XML-Objekt anzugeben.
Von django / core / serializers / xml_serializer.py:
%Vor%Wenn das pk-Attribut fehlt, wird eine Ausnahme ausgelöst. Also müssen wir etwas pk zur Verfügung stellen.
Von django / models / fields / init .py
%Vor%Wenn pk nicht ganzzahlig ist - auch Ausnahme.
Es sieht so aus, als ob es keine Möglichkeit gibt, ein leeres pk bereitzustellen.
Abhilfe könnte sein:
Es ist ein bisschen knifflig, weil in den Schritten 1-5 die Tabelle gesperrt sein sollte ... irgendwie ... um Kollisionen zu vermeiden.
BEARBEITEN:
Problemumgehung ist:
Während der Iteration setzen Sie id und pk auf None und später auf save ()
mymodels_iterator = serializers.deserialize ("xml", fixed_pk_serialized_xml_model)
für mein Modell in mymodels_iterator:
%Vor%Und es funktioniert!
Danke an Evgenys Kommentar zur clone () Methode.
Tags und Links django serialization