2010-02-24 4 views
18

У меня есть экземпляр Django-CMS, уже работающий в производственной среде. Я хотел бы сбросить все данные, связанные с CMS (PAGES и PLUGINS), чтобы я мог загрузить его обратно в свою среду разработки.Как полностью сбрасывать данные для Django-CMS

Когда я делаю python manage.py dumpdata cms, он выгружает большую часть данных, но не все. Ни один контент для плагинов не сбрасывается. Когда я смотрю на источник django-cms, я вижу, что плагины организованы в другой папке, чем остальные модели. Я уверен, что это имеет какое-то отношение к поведению dumpdata.

Кто-нибудь знает, как они достигнут того, что я пытаюсь сделать?

Спасибо за вашу помощь/ответы!

+0

Если вы используете приложение крючки вероятно, вы должны экспортировать данные из них, и связанные с ними модели тоже. –

ответ

2

Ваша команда dumpdata только сбрасывает данные для cms приложения, но каждый плагин (cms.plugins.text, cms.plugins.picture и т.д.) является его собственное приложение, и поэтому необходимо добавить к командной строке.

+0

'питон manage.py dumpdata cms.plugins.text' генерирует следующий результат: ' Error: Unknown приложение: cms.plugins.text' Хотя я бы это, перечисленные в качестве одного из моих установленных приложений в моя главная settings.py и приложение работает правильно. – edub

+0

Не могли бы вы показать рабочий пример команды dumpdata, которую вы используете? (спасибо) – edub

+0

Вы смогли воспроизвести эту ошибку? – edub

12

Вот обновление к процедуре я использую:

./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; 

Если вы не удалить таблицы выше, вы получите эту ошибку при загрузке светильников:

IntegrityError: duplicate key value violates unique constraint django_content_type_app_label_key 

И затем:

./manage.py loaddata fixtures/all.json 

Philipp

17

Встроенные команды дампа и восстановления Django хорошо работают для переноса содержимого CMS.

Чтобы сбросить содержимое CMS, вы должны включать в себя как приложение Cms, а также каждого из типов подключаемых модулей, которые вы используете в dumpdata команды, так что-то вроде:

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

сбросить ваш (вам просто нужно имя приложения, а не полный путь, например cms.plugins.text).

+0

, вы можете использовать --indent = 4, чтобы вы могли лучше прочитать вывод и посмотреть, нет ли чего-то или нет. –

+4

Кроме того, если вы хотите одновременно быть ленивым и точным - используйте команду cms для перечисления используемых плагинов, чтобы определить, какие из них вам действительно нужны: python manage.py cms list plugins Это будет только показать подключаемые модули - и, следовательно, те, которые на самом деле имеют контент, который необходимо экспортировать. – growlf

+0

Это также будет более важно с CMS 3.0, где плагины были переименованы/переименованы и больше не являются частью приложения CMS. – growlf

4

Для DjangoCMS 3.0 синтаксис тот же, но имена плагинов все изменились. Для того, чтобы получить все стандартные плагины:

./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