Versões anteriores do Django incluíam um sistema de comentários defasado e não documentado. Usuários que usaram engenharia reversa nesse framework precisarão atualizá-lo para usar o novo sistema; este guia explica como.
As principais mudanças são:
Este novo sistema é documentado.
Ele usa funcionalidades modernas do Django como o forms e modelforms.
Ele tem um único model Comment ao invés de ter separados os modelos FreeComment e Comment.
Comentários têm campos “email” e “URL”.
Sem ratings, fotos e karma. Isso só deve afetar o Mundo Online.
A tag {% comment_form %} não existe mais. Em seu lugar, agora tem duas novas funções: {% get_comment_form %}, que retorna um formulário para postar um novo comentário, e {% render_comment_form %}, que renderiza um dado formulário utilizando o template comments/form.html.
A forma que os comentários são incluídos na URLconf mudaram; você vai precisar substituir:
(r'^comments/', include('django.contrib.comments.urls.comments')),
com:
(r'^comments/', include('django.contrib.comments.urls')),
Os models do sistema de comentários do Django mudou, bem como os nomes das tabelas. Antes de você tranfer seus dados para o novo sistema de comentários, esteja certo de que instalou o novo sistema de comentários como explicado em guia rápido de início.
Para transferir seus dados para o novo sistema de comentários, você precisará rodar diretamente o seguinte 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;
Dec 26, 2011