我正在尝试自定义Django的评论表单。在django.contrib.comments.forms
内部,我注意到所有字段表单都在类CommentDetailForm
中声明,该类继承自CommentSecurityForm
。然后我想当我编写模板标记{% get_comment_form for order as form %}
时,它会获得名为CommentForm
的类,该类继承了蜜罐字段CommentDetailForm
。
我想自定义评论表单,以便它只显示评论字段(而不是可选的名称,电子邮件或URL字段)。这些信息将由当前登录的用户提供。实际上,只有具有某些UserProfile.user_type
(UserProfile
的{{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>
,Name
和Email address
。
答案 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 %}