2010-03-31 13 views

Répondre

0

OK si quelqu'un est à la recherche de la réponse à cela, voici comment je l'ai résolu:

# 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

écrasent les forme de commentaires, sauf méthode et définissez is_public True

+0

Je ne suis pas sûr où Je écraserais cette méthode. Je n'ai fait aucune personnalisation sur la configuration de mes commentaires. –

1

Le construit sous forme de commentaires devrait déjà mis tous les commentaires pour avoir is_public = True. Voir CommentDetailsForm.get_comment_create_data dans http://code.djangoproject.com/browser/django/trunk/django/contrib/comments/forms.py

Si vous voulez changer cela pour connecté vs non utilisateurs connectés, jetez un oeil à la construction dans la modération des commentaires docs: http://docs.djangoproject.com/en/1.1/ref/contrib/comments/moderation/#ref-contrib-comments-moderation

Vous pouvez écrire votre propre modérateur qui vérifie le commentaire pour voir si le comment.user est réglé et si elle est modérée ne pas (is_public = True) sinon défini is_public = False.

+0

OK, je regarde la source de django, et je vois que la valeur par défaut devrait être is_public = True. Mais dans ma configuration, le commentaire a toujours is_public = False. Très étrange –

0

Outrepasser la moderate de CommentModerator fonctionne pour moi:

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 
+1

Et puis enregistrer le modérateur via moderator.register je suppose? –

Questions connexes