revision-up-to: | 17812 (1.4) |
---|
Django の以前のバージョンには、もう撤廃された、ドキュメント化されていない コメントシステムがありました。このフレームワークをリバースエンジニアリング して使っていたユーザは、新たなコメントシステムに移行する必要があります。 このガイドでは、コメントシステムの移行方法を解説しています。
まず、新旧のコメントシステムの違いを示します:
FreeComment
と Comment
モデルに分かれ
ていましたが、 Comment
に統合されました。{% comment_form %}
タグがなくなりました。その代り、新たなコメント
のポストに使うフォームを返す {% get_comment_form %}
と、
comments/form.html
テンプレートを使ってフォームをレンダする
{% render_comment_form %}
の二つのタグが追加されました。URLconf へのインクルード方法が変わりました。次のように書いていたところを:
(r'^comments/', include('django.contrib.comments.urls.comments')),
次のように書き換えてください:
(r'^comments/', include('django.contrib.comments.urls')),
コメントシステムのデータモデルは、新しいモデルで変更され、テーブルの名前も 変わりました。既存のデータを新たなコメントシステムに移す前に、 クイックスタートガイド に従って新たな コメントシステムをインストールし、適切なテーブルを生成しておいてください。
データを新たなコメントシステムに移行するには、以下のような SQL を直接実行し てください:
BEGIN;
INSERT INTO django_comments
(content_type_id, object_pk, site_id, user_name, user_email, user_url,
comment, submit_date, ip_address, is_public, is_removed)
SELECT
content_type_id, object_id, site_id, person_name, '', '', comment,
submit_date, ip_address, is_public, not approved
FROM comments_freecomment;
INSERT INTO django_comments
(content_type_id, object_pk, site_id, user_id, user_name, user_email,
user_url, comment, submit_date, ip_address, is_public, is_removed)
SELECT
content_type_id, object_id, site_id, user_id, '', '', '', comment,
submit_date, ip_address, is_public, is_removed
FROM comments_comment;
UPDATE django_comments SET user_name = (
SELECT username FROM auth_user
WHERE django_comments.user_id = auth_user.id
) WHERE django_comments.user_id is not NULL;
UPDATE django_comments SET user_email = (
SELECT email FROM auth_user
WHERE django_comments.user_id = auth_user.id
) WHERE django_comments.user_id is not NULL;
COMMIT;
Oct 26, 2017