2010-02-24 6 views
18

Tôi có một thể hiện của Django-CMS đã chạy trong một môi trường sản xuất. Tôi muốn đổ tất cả các dữ liệu liên quan đến CMS (PAGES và PLUGINS) để tôi có thể tải nó trở lại môi trường phát triển của mình.Làm thế nào để hoàn toàn đổ dữ liệu cho Django-CMS

Khi tôi làm python manage.py dumpdata cms, nó sẽ loại bỏ hầu hết dữ liệu, nhưng không phải tất cả dữ liệu. Không có nội dung nào cho các plugin được bán phá giá. Khi tôi nhìn vào nguồn django-cms, tôi thấy rằng các plugin được sắp xếp trong một thư mục khác so với phần còn lại của các mô hình - Tôi chắc rằng điều này có liên quan đến hành vi của dumpdata.

Có ai biết cách họ sẽ đạt được những gì tôi đang cố gắng làm không?

Cảm ơn sự giúp đỡ/câu trả lời của bạn!

+0

Nếu bạn đang sử dụng lưỡi câu ứng dụng có lẽ bạn nên xuất dữ liệu từ họ, và liên quan đến họ, các mô hình quá. –

Trả lời

2

lệnh dumpdata của bạn chỉ bãi dữ liệu cho các ứng dụng cms, nhưng mỗi plugin (cms.plugins.text, cms.plugins.picture, vv) là ứng dụng riêng của mình, và do đó cần phải được bổ sung vào dòng lệnh.

+0

'python manage.py dumpdata cms.plugins.text' tạo ra các kết quả sau: ' Lỗi: Không rõ ứng dụng: cms.plugins.text' Mặc dù tôi đã này được liệt kê là một trong những ứng dụng được cài đặt của tôi trong settings.py chính của tôi và ứng dụng hoạt động chính xác. – edub

+0

Bạn có thể hiển thị ví dụ hoạt động của lệnh dumpdata mà bạn sử dụng không? (cảm ơn) – edub

+0

Bạn đã có thể sao chép lỗi này? – edub

12

Dưới đây là một bản cập nhật cho trình tôi sử dụng:

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

Nếu bạn không xóa các bảng ở trên, bạn sẽ nhận được lỗi này khi tải đồ đạc:

IntegrityError: duplicate key value violates unique constraint django_content_type_app_label_key 

Và sau đó:

./manage.py loaddata fixtures/all.json 

Philipp

17

Các lệnh xây dựng và khôi phục của Django hoạt động tốt để di chuyển nội dung của CMS.

Để đổ nội dung của CMS, bạn cần bao gồm cả ứng dụng cms cũng như mỗi loại plugin của bạn đang sử dụng trong lệnh dumpdata, vì vậy cái gì đó như:

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

để đổ của bạn nội dung (bạn chỉ cần tên ứng dụng chứ không phải đường dẫn đầy đủ, như cms.plugins.text).

+0

bạn có thể muốn sử dụng --indent = 4 để bạn có thể đọc kết quả đầu ra tốt hơn và xem liệu có thiếu thứ gì đó hay chỉnh sửa nó. –

+4

Ngoài ra, nếu bạn muốn cả hai đều lười biếng và chính xác cùng một lúc - hãy sử dụng lệnh cms để liệt kê các plugin đã sử dụng để xác định cái nào bạn thực sự cần như vậy: python manage.py cms list plugins Điều này sẽ chỉ hiển thị các plugin đang được sử dụng - và do đó các plugin thực sự có nội dung cần được xuất. – growlf

+0

Điều này cũng sẽ quan trọng hơn với CMS 3.0, nơi các plugin đã di chuyển/được đổi tên và không còn là một phần của ứng dụng CMS nữa. – growlf

4

Đối với DjangoCMS 3.0, cú pháp giống nhau nhưng tên của các plugin đã thay đổi. Để có được tất cả các plugin tiêu chuẩn:

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