¿Hay alguna manera de hacer que Django establezca automáticamente el campo is_public del comentario como True?
Solo permito comentarios para usuarios registrados y me gustaría omitir la revisión manual de los comentarios publicados.
Respuestas
1 para la respuesta № 1El formulario de comentarios integrado ya debería establecer que cada comentario tenga is_public = True. Ver CommentDetailsForm.get_comment_create_data
en http://code.djangoproject.com/browser/django/trunk/django/contrib/comments/forms.py
Si desea cambiar esto para los usuarios que han iniciado sesión y los que no lo han hecho, eche un vistazo a los documentos integrados de moderación de comentarios: http://docs.djangoproject.com/en/1.1/ref/contrib/comments/moderation/#ref-contrib-comments-moderation
Puede escribir su propio moderador que verifica el comentario para ver si el comment.user está configurado y si no está moderado (is_public = True) de lo contrario, configure is_public = False.
0 para la respuesta № 2
sobrescriba el método de guardar el formulario de comentarios y establezca is_public en True
0 para la respuesta № 3
OK, si alguien está buscando la respuesta para esto, así es como lo resolví:
# in models.py:
import datetime
def moderate_comment(sender, instance, **kwargs):
if not instance.id:
instance.is_public = True
from django.contrib.comments.models import Comment
from django.db.models import signals
signals.pre_save.connect(moderate_comment, sender=Comment)
0 para la respuesta № 4
Anulando el moderate
de CommentModerator funciona para mí:
from django.contrib.comments.moderation import CommentModerator
class EntryModerator(CommentModerator):
# [...]
def moderate(self, comment, content_object, request):
# If the user who commented is a staff member, don"t moderate
if comment.user and comment.user.is_staff:
return False
else:
return True