2010-08-06 11 views
0

J'utilise le système de commentaires de django et tout fonctionne bien, à part que les commentaires sont ajoutés dans la table avec is_public étant défini sur false.django comments pourquoi le champ is_public est mis à false

Est-ce que quelqu'un sait pourquoi il en est et comment je peux le réparer, ce sont les définir comme vrai

modifier, voici le code que j'ai:

{% load comments %} 

<ul> 
{% get_comment_list for entry as comment_list %} 
{% for c in comment_list %} 
<li>{{c.comment|safe|linebreaksbr}} - {{c.user_name}}, <span>left {{ c.submit_date|timesince }} ago)</span></li> 
{% empty %} 
<li> 
    No comments have been added 
</li> 
{% endfor %} 
</ul> 

{% get_comment_form for entry as form %} 

<form action="{% comment_form_target %}" method="POST"> 
    {{ form.content_type }} 
    {{ form.object_pk }} 
    {{ form.timestamp }} 
    {{ form.security_hash }} 
    <p style="display:none"> 
     {{ form.honeypot }} 
    </p> 
    <input type="hidden" name="next" value="/public/blog/post/{{entry.slug}}/" /> 
      <div class="contentSectionTitleWhite"> 
       LEAVE COMMENT 
      </div> 
      <div class="postLeaveReplayContainer"> 
       <!-- NAME --><span class="commonControlLabel">Your name:</span>&nbsp;<span class="commonControlLabelItalic">(required)</span> 
       <span id="postNameErrorMsg" class="commonControlErrorMsg"></span> 
       <br/> 
       <input class="commonInput" type="text" id="id_name" name="name" /> 
       <br/> 
       <!-- EMAIL --><span class="commonControlLabel">Your email:</span>&nbsp; <span class="commonControlLabelItalic">(required, will not be published)</span> 
       <span id="postEmailErrorMsg" class="commonControlErrorMsg"></span> 
       <br/> 
       <input class="commonInput" type="text" id="id_email" name="email" /> 
       <br/> 
       <!-- MESSAGE --><span class="commonControlLabel">Message:</span>&nbsp;<span class="commonControlLabelItalic">(required)</span> 
       <span id="postMessageErrorMsg" class="commonControlErrorMsg"></span> 
       <textarea class="commonTextarea" rows="20" cols="20" id="id_comment" name="comment"> 
       </textarea> 
       <br/> 
       <!-- SEND BUTTON --><input type="submit" value="Submit" id="postSendButton" class="readViewMoreBtn"> 

     </form> 

Répondre

1

Pour que cela fonctionne, j'ai ajouté le code suivant à mon modèle

def moderate_comment(sender, instance, **kwargs): 
    if not instance.id: 
     instance.is_public = True 

signals.pre_save.connect(moderate_comment, sender=Comment) 
0

étrange, parce que (au moins en Django 1.2) la valeur par défaut est définie sur True:

is_public = models.BooleanField(_('is public'), default=True, 
       help_text=_('Uncheck this box to make the comment effectively ' \ 
          'disappear from the site.')) 

Êtes-vous vous SHURE ne explicity valeur false dans tout vous voir? Ou avez-vous utilisé le Generic comment moderation? Peut-être le auto moderation est utilisé. Elle a mis le champ is_public de nouveaux commentaires sur False avant de les enregistrer (pour éviter le spam)

+0

ouais thats ce que je pensais et je l'ai fait sur d'autres sites et cela a bien fonctionné. existe-t-il des paramètres ou des remplacements qui le définissent sur false? Si par exemple un e-mail est mal formaté. – John

+0

Vous n'avez donc pas utilisé l'application de modération des commentaires génériques? – maersu

+0

non, pas autant que je sache. J'utilise Django 1.1 si – John