django: как сделать комментарии django закрытыми по умолчанию

Использование структуры комментариев django http://docs.djangoproject.com/en/dev/ref/contrib/comments/

Не уверен, что есть возможность сделать все комментарии неличными до того, как они пройдут модерацию... Похоже, все мои комментарии добавляются на сайт сразу после публикации. действительно нужно изменить это


person Oleg Tarasenko    schedule 02.04.2010    source источник


Ответы (2)


Один из способов сделать это — написать собственную форму комментариев, которая наследуется от django.contrib.comments.forms.CommentForm, и переписать ее функцию get_comment_create_data. ВНИМАНИЕ: этот код не тестировался.

from django.contrib.comments.forms import CommentForm

class MyCommentForm(CommentForm):
    def get_comment_create_data(self):
        data = super(MyCommentForm, self).get_comment_create_data()
        data['is_public'] = False
        return data

Затем вы подключите эту форму к системам комментариев, как описано в этом разделе http://docs.djangoproject.com/en/dev/ref/contrib/comments/custom/

person Mark Lavin    schedule 02.04.2010
comment
Я использовал этот код, чтобы сделать что-то подобное; это сработало. Одна загвоздка: dict не является оптимальным именем для переменной, поскольку оно переопределяет встроенное. Вместо этого я использовал данные. - person Gringo Suave; 30.08.2011

Настройте модератора комментариев и установите «auto_moderate_field» в DateField или DateTimeField в модели, а «moderate_after» — в 0.

class ArticleModerator(CommentModerator):
    email_notification = True
    enable_field = 'enable_comments'
    auto_moderate_field = 'pub_date'
    moderate_after = 0

moderator.register(Article, ArticleModerator)

Дополнительная информация в документации: https://docs.djangoproject.com/en/dev/ref/contrib/comments/moderation/#built-in-moderation-options

person netboy    schedule 28.10.2011