Как полностью сбросить данные для Django-CMS

У меня есть экземпляр Django-CMS, который уже работает в рабочей среде. Я хотел бы сбросить все данные, связанные с CMS (СТРАНИЦЫ и ПЛАГИНЫ), чтобы я мог загрузить их обратно в свою среду разработки.

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

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

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


person edub    schedule 24.02.2010    source источник
comment
Если вы используете хуки приложений, вам, вероятно, следует экспортировать данные из них, а также связанные с ними модели.   -  person Ilian Iliev    schedule 20.04.2012


Ответы (4)


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

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

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

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

person Michael C. O'Connor    schedule 08.02.2011
comment
вы можете использовать --indent=4, чтобы вы могли лучше прочитать вывод и посмотреть, не пропало ли что-то, или отредактировать его. - person michel.iamit; 21.08.2013
comment
Кроме того, если вы хотите одновременно быть ленивым и точным — используйте команду cms для перечисления используемых плагинов, чтобы определить, какие из них вам действительно нужны, например: python manage.py cms list plugins Это покажет только используемые плагины - и, таким образом, те, у которых действительно есть контент, который необходимо экспортировать. - person The NetYeti; 07.02.2014
comment
Это также будет более важно для CMS 3.0, где плагины были перемещены/переименованы и больше не являются частью приложения CMS. - person The NetYeti; 09.02.2014

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

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

Филипп

person Googol    schedule 14.04.2010

Для 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

person Joel Aufrecht    schedule 08.06.2014

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

person Ignacio Vazquez-Abrams    schedule 24.02.2010
comment
python manage.py dumpdata cms.plugins.text выдает следующий результат: Error: Unknown application: cms.plugins.text Несмотря на то, что это указано как одно из моих установленных приложений в моем main settings.py, и приложение работает правильно. - person edub; 25.02.2010
comment
Не могли бы вы показать рабочий пример команды dumpdata, которую вы используете? (Благодарность) - person edub; 28.02.2010
comment
Эээ, нет, но я не использую Django-CMS. Вы можете попробовать спросить в #django на Freenode. - person Ignacio Vazquez-Abrams; 12.03.2010