2010-02-24 7 views
18

Ich habe eine Instanz von Django-CMS bereits in einer Produktionsumgebung ausgeführt. Ich würde gerne alle Daten im Zusammenhang mit dem CMS (PAGES und PLUGINS) ablegen, damit ich sie wieder in meine Entwicklungsumgebung laden kann.Wie man die Daten für Django-CMS vollständig ausgibt

Wenn ich tun python manage.py dumpdata cms Dumps die meisten Daten, aber nicht alles davon. Kein Inhalt für die Plugins wird gelöscht. Wenn ich mir die django-cms-Quelle anschaue, sehe ich, dass die Plugins in einem anderen Ordner als die übrigen Modelle organisiert sind - das hat sicher etwas mit dem Verhalten von dumpdata zu tun.

Weiß jemand, wie sie erreichen würden, was ich versuche zu tun?

Vielen Dank für Ihre Hilfe/Antworten!

+0

Wenn Sie App Haken verwenden, sollten Sie wahrscheinlich die Daten aus ihnen exportieren und im Zusammenhang mit ihnen auch Modelle. –

Antwort

2

Ihr dumpdata Befehl gibt nur die Daten für die cms App, aber jedes Plugin (cms.plugins.text, cms.plugins.picture, etc.) ist eine eigene App, und muss so in die Befehlszeile hinzugefügt werden.

+0

'Python manage.py DumpData cms.plugins.text' erzeugt das folgende Ergebnis: ' Fehler: Unbekannte Anwendung: cms.plugins.text' Auch wenn ich dies als eine meiner installierten Anwendungen aufgeführt werden, haben in Meine Haupteinstellungen.py und die Anwendung funktioniert ordnungsgemäß. – edub

+0

Könnten Sie bitte ein funktionierendes Beispiel für den von Ihnen verwendeten Befehl dumpdata zeigen? (Danke) – edub

+0

Können Sie diesen Fehler replizieren? – edub

12

Hier ist ein Update für die Prozedur, die ich verwende:

./manage.py dumpdata >fixtures/all.json 

psql 
DROP DATABASE [DBNAME]; 
createdb -T template_postgis [DBNAME] 

./manage.py syncdb 

psql [DBNAME] 

delete from auth_group_permissions; delete from auth_permission; delete from django_admin_log; delete from django_content_type; 

Wenn Sie löschen die Tabellen nicht über diese Fehlermeldung angezeigt werden, wenn die Geräte geladen:

IntegrityError: duplicate key value violates unique constraint django_content_type_app_label_key 

Und dann:

./manage.py loaddata fixtures/all.json 

Philipp

17

Die integrierten Dump- und Restore-Befehle von Django eignen sich gut zum Migrieren des Inhalts des CMS.

Um den Inhalt des CMS-Dump, müssen Sie sowohl die cms App als auch jede der Plugin-Typen Sie verwenden im DumpData Befehl, so etwas wie die folgenden:

manage.py dumpdata cms text picture link file [other plugin types] > cms_export.json 

dump Ihre Inhalt (Sie brauchen nur den App-Namen, nicht den vollständigen Pfad, wie cms.plugins.text).

+0

möchten Sie vielleicht --indent = 4 verwenden, damit Sie die Ausgabe besser lesen und sehen können, ob etwas fehlt, oder bearbeiten Sie es. –

+4

Wenn Sie gleichzeitig sowohl faul als auch präzise sein möchten, verwenden Sie den cms-Befehl zum Auflisten der verwendeten Plugins, um festzustellen, welche tatsächlich benötigt werden: Python manage.py cms Liste Plugins Dies wird nur Zeige die verwendeten Plugins - und damit diejenigen, die tatsächlich Inhalte haben, die exportiert werden müssen. – growlf

+0

Dies ist auch wichtiger mit CMS 3.0, wo die Plugins umgezogen sind und nicht mehr Teil der CMS App sind. – growlf

4

Für DjangoCMS 3.0 ist die Syntax identisch, aber die Namen der Plugins haben sich alle geändert. Um alle Standard-Plugins zu erhalten:

./manage.py dumpdata cms djangocms_column djangocms_file djangocms_flash djangocms_googlemap djangocms_inherit djangocms_link djangocms_picture djangocms_style djangocms_teaser djangocms_text_ckeditor djangocms_video > cms_export.json

Verwandte Themen