.. _ref-contrib-comments-upgrade: =============================================== Upgrading from Django's previous comment system =============================================== Prior versions of Django included an outdated, undocumented comment system. Users who reverse-engineered this framework will need to upgrade to use the new comment system; this guide explains how. The main changes from the old system are: * This new system is documented. * It uses modern Django features like :ref:`forms ` and :ref:`modelforms `. * It has a single ``Comment`` model instead of separate ``FreeComment`` and ``Comment`` models. * Comments have "email" and "URL" fields. * No ratings, photos and karma. This should only effect World Online. * The ``{% comment_form %}`` tag no longer exists. Instead, there's now two functions: ``{% get_comment_form %}``, which returns a form for posting a new comment, and ``{% render_comment_form %}``, which renders said form using the ``comments/form.html`` template. Upgrading data -------------- The data models have changed, as have the table names. To transfer your data into the new system, you'll need to directly run the following SQL: .. code-block:: 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, 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 ); UPDATE django_comments SET user_email = ( SELECT email FROM auth_user WHERE django_comments.user_id = auth_user.id ); COMMIT;