2010-02-24 30 views
18

我有一个Django-CMS的实例已经在生产环境中运行。我想转储所有与CMS(PAGES和PLUGINS)相关的数据,以便我可以将它重新加载到我的开发环境中。如何完全转储Django-CMS的数据

当我做python manage.py dumpdata cms它转储大部分数据,但不是全部。没有任何插件的内容被转储。当我查看django-cms源代码时,发现插件与其他模型组织在不同的文件夹中 - 我确信这与dumpdata的行为有关。

有谁知道他们将如何实现我想要做的?

感谢您的帮助/答案!

+0

如果您正在使用的应用程序挂钩你应该从中导出数据,以及与之相关的,型号太多。 – 2012-04-20 12:13:13

回答

2

dumpdata命令仅转储为cms应用中的数据,但每一个插件(cms.plugins.textcms.plugins.picture等)是其自己的应用程序,所以需要被添加到命令行。

+0

'蟒蛇manage.py dumpdata cms.plugins.text'产生以下结果: '错误:未知的应用程序:cms.plugins.text' 即使我有这个列为我在安装应用程序之一我的主要settings.py和应用程序运行正常。 – edub 2010-02-25 13:24:16

+0

您能否给出一个您使用的dumpdata命令的工作示例? (谢谢) – edub 2010-02-27 22:47:43

+0

你能复制这个错误吗? – edub 2010-03-12 19:44:08

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 

菲利普

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,这样您可以更好地阅读输出并查看是否缺少某些内容或对其进行编辑。 – 2013-08-21 08:12:38

+4

此外,如果你想同时懒惰和准确 - 使用cms命令列出使用的插件,以确定哪些你真的需要这样的: python manage.py cms列表插件 这只会显示正在使用的插件 - 以及实际上具有需要导出的内容的插件。 – growlf 2014-02-06 20:24:37

+0

对于CMS 3.0,插件移动/重命名并且不再是CMS应用程序的一部分,这对于CMS 3.0来说也更重要。 – growlf 2014-02-08 23:31:50

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