django-wordpress-adminを使ってみる

以前書いた記事

MovableTypeのバックアップ

tokibitoさんからコメントを頂き知った

django-wordpress-admin

こいつを使って、

今のMovableTypeのブログをDjango

移行しようと考えてみました。

django-wordpress-admin

GoogleCodeで公開されています。

ここからどうぞ

django-wordpress-adminの中身は、

django-wordpress-admin-read-only/
readme.txt
wordpress/
__init__.py
__init__.pyc
models.py
models.pyc
views.py

内容としては、
models.pyWordPressのDB構成で書かれている。

実際に試してみた。

とりあえずは、

1. MovableTypeがDBを使っていないため、テキスト形式でバックアップ。

2. WordPressをインストール

3. MovableTypeのバックアップファイルをWordPressのDBへインポート

これすごい!ちゃんとインポートされる。すごく気持ちがいいw

4. WordPressに入れたデータをmysqldumpする。(CREATE文が入っているもの)

5. Djangoでプロジェクトを作成(今回は仮でweblogとする。)

6. アプリケーションを作成(今回は仮でblogとする。)

この後、
django-wordpress-admin-read-only/wordpress/以下をモデルの下へコピーし、
settings.pyINSTALLED_APPSに「6」で追加したアプリケーションblogを追加。
他にもadminなんかも追加しておくので、
settyngs.pyINSTALLED_APPSは下記のようになる。

INSTALLED_APPS = (
 ’django.contrib.auth’,
 ’django.contrib.contenttypes’,
 ’django.contrib.sessions’,
 ’django.contrib.sites’,
 ’django.contrib.markup’,
 ’django.contrib.admin’,
 ’weblog.blog’,
)

それからsyncdbを叩くと、DBがちゃんと作成されない。。。。。

./manage.py sql blog

で確認してもちゃんとCreateTableしているのに。。。

で何が足りないか?

・ テーブル(wp_post2cat)
・ wp_postsテーブルのカラム(comment_status)
・ wp_postsテーブルのカラム(ping_status)
・ wp_postsテーブルのカラム(post_status)
・ wp_postsテーブルのカラム(post_password)

これが足りないorz

なので、

INSTALLED_APPSへはアプリを追加せずに実行する。

7. 「6」で追加したアプリケーションをコメントアウト

INSTALLED_APPS = (
 ’django.contrib.auth’,
 ’django.contrib.contenttypes’,
 ’django.contrib.sessions’,
 ’django.contrib.sites’,
 ’django.contrib.markup’,
 ’django.contrib.admin’,
# ’weblog.blog’,
)

8. 先ほどsyncdbをしたので、一度DBをドロップしてから再作成。

9. mysqldumpをDBへ流し込む。
※ CREATE文が入っているものであれば、models.pyと同期が取れるので。

10. 「7」でコメントアウトしたアプリケーションのコメントアウトを外す。

11. django-wordpress-admin-read-only/readme.txtに書いてある通りにテーブル名を変更する。

ALTER TABLE `blog`.`wp_post2cat` RENAME TO `blog`.`wp_posts_categories`;

ALTER TABLE `blog`.`wp_link2cat` RENAME TO `blog`.`wp_links_categories`;

12. models.pyも11に伴い変更する。

47行目

categories = models.ManyToManyField(Category, db_table=u’%swp_link2cat’ % WP_PREFIX, filter_interface=models.HORIZONTAL)

を下記に変更する。

categories = models.ManyToManyField(Category, db_table=u’%slinks_categories’ % WP_PREFIX, filter_interface=models.HORIZONTAL)

122行目

categories = models.ManyToManyField(Category, db_table=u’%swp_post2cat’ % WP_PREFIX, filter_interface=models.HORIZONTAL)

を下記に変更する。

categories = models.ManyToManyField(Category, db_table=u’%sposts_categories’ % WP_PREFIX, filter_interface=models.HORIZONTAL)

これでadminへログインしてデータを確認する。

ちゃんと管理側でも確認出来た♪

後はviews.pyやテンプレートを作成すればOK.

でもWordPressをそのまま使えばって思うが、

Djangoで作ってみたい!!!ので作成する事に決定w

投稿者:

kishir

趣味: sk8, ピスト、ターンテーブル、レコード 仕事: Python, Objective-C, PHP, JavaScript

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です