Django Reversion speichert keine Revisionen in der Shell

8

Ich habe die Schritte Erstinstallation durchgeführt und die ersten Revisionen erstellt, aber dann, wenn ich ein Modell in Django speichere Shell, die neue Revision wird nicht erstellt:

%Vor%

Dies ist die erste Revision.

Wenn ich das Modell aus einer Ansicht aktualisiere, wird eine Revision erfolgreich erstellt.

Was vermisse ich?

Die Datei models.py lautet:

%Vor%

Ich sehe eine Umkehrmethode unter post_save receiver, obwohl sie beim Debuggen nicht aufgerufen wird.

Ich habe Django v1.4.1, Reversion v1.6.2.

    
culebrón 03.09.2012, 06:34
quelle

1 Antwort

21

Ich habe Django-Reversion geschrieben, also denke ich, dass ich etwas Licht in dieses Thema bringen kann.

Eine Version eines Modells wird automatisch gespeichert, wenn ein Modell gespeichert wird, sofern Folgendes zutrifft:

  1. Das Modell ist mit Django-Reversion registriert.
  2. Der Codeblock ist als innerhalb einer Revision befindlich markiert.

Punkt 1 kann entweder durch Registrieren eines Modells mit VersionAdmin oder durch explizites Aufrufen von reversion.register() in Ihrer models.py-Datei erreicht werden.

Punkt 2 kann mithilfe von RevisionMiddleware oder reversion.create_revision() decorator oder context manager erreicht werden. Alle Admin-Ansichten in VersionAdmin speichern auch eine Revision.

Wenn also Ihre Shell keine Versionen erstellt, wird entweder Punkt 1 oder Punkt 2 nicht erfüllt. Hier ist, wie Sie es beheben können:

  1. Wenn Sie VersionAdmin verwenden, importieren Sie das entsprechende Admin-Modul in Ihren Shell-Code, um die automatische Registrierung zu starten. Alternativ rufen Sie reversion.register() in Ihrer models.py-Datei auf.
  2. Verwenden Sie in Ihrem Shell-Code den reversion.create_revision() -Kontextmanager, um Ihren Aufruf zu speichern.
%Vor%

Mehr zu dieser Art von Dingen auf der Wiki-Seite der Low Level API:

Ссылка

    
Dave 07.12.2012, 09:30
quelle