Atualizando o sistema de comentários de um Django anterior¶
Versões anteriores do Django incluem um atrasado, não documentado sistema de comentários. 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 modelosFreeComment
eComment
.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 templatecomments/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')),
Atualizando dados¶
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;