如何自定义Django的评论表单?

时间:2012-03-27 03:42:07

标签: django django-forms django-comments

我正在尝试自定义Django的评论表单。在django.contrib.comments.forms内部,我注意到所有字段表单都在类CommentDetailForm中声明,该类继承自CommentSecurityForm。然后我想当我编写模板标记{% get_comment_form for order as form %}时,它会获得名为CommentForm的类,该类继承了蜜罐字段CommentDetailForm

我想自定义评论表单,以便它只显示评论字段(而不是可选的名称,电子邮件或URL字段)。这些信息将由当前登录的用户提供。实际上,只有具有某些UserProfile.user_typeUserProfile的{​​{1}}外键的用户)才能发表评论。

有关如何实现这一目标的任何提示?查看Django评论的源代码已经让我大吃一惊。

修改

以下是评论模板到目前为止的显示方式:

User

该网站看起来像这样

我想要隐藏{% get_comment_form for order as form %} <form action = "{% comment_form_target %}" method = "post"> {% csrf_token %} {{ form }} <input type = "submit" name = "submit" value = "Post"> </form> NameEmail address

1 个答案:

答案 0 :(得分:2)

您应该可以在模板中执行所有这些操作:

{% ifequal User.profile.user_type "comment_type" %}
{% get_comment_form for order as form %}
  <form action="{% comment_form_target %}" method="post">
    {% csrf_token %}
    {% for field in form %}
    {% ifequal field.name "name" %}
        <input id="id_name" type="hidden" name="name" value="{{ user.username }}" />
    {% else %}{% ifequal field.name "email" %}
        <input type="hidden" name="email" value="{{ user.email }}" id="id_email" />
    {% else %}{{ field }}{% endifequal %}{% endifequal %}
    {% endfor %}    
        <input type="submit" name="submit" value="Post">
  </form>
{% endifequal %}
相关问题