我一直在阅读关于评论框架的django文档以及如何自定义它(http://docs.djangoproject.com/en/1.1/ref/contrib/comments/custom/) 在该页面中,它显示了如何向表单添加新字段。但我想要做的是删除不必要的字段,如URL,电子邮件(以及其他次要的mod)。
在同一个doc页面上,它说要走的路是从 BaseCommentAbstractModel 扩展我的自定义注释类,但这就是它,我到目前为止,现在我在失利。我在这个具体方面找不到任何东西。
答案 0 :(得分:12)
我最近实施了Ofri提到的解决方案,因为我只想接受一个单独的“评论”字段来评论(比如SO,没有“名称”,没有“电子邮件”,没有“网址”)。
要自定义默认注释表单和列表显示,我在根目录“templates”目录中创建了一个“comments”目录,并覆盖了两个默认注释模板。
我的“/templates/comments/form.html”是:
{% load comments i18n %}
{% if user.is_authenticated %}
<form action="{% comment_form_target %}" method="post">
{% csrf_token %}
{% if next %}<input type="hidden" name="next" value="{{ next }}" />{% endif %}
{% for field in form %}
{% if field.is_hidden %}
{{ field }}
{% else %}
{% if field.name != "name" and field.name != "email" and field.name != "url" %}
{% if field.errors %}{{ field.errors }}{% endif %}
<p {% if field.errors %} class="error"{% endif %} {% ifequal field.name "honeypot" %} style="display:none;"{% endifequal %}>
{{ field }}
</p>
{% endif %}
{% endif %}
{% endfor %}
<input type="submit" name="post" class="submit-post" value="{% trans "Add Comment" %}" />
</form>
{% else %}
I'm sorry, but you must be <a href="javascript:alert('send to login page')">logged in</a> to submit comments.
{% endif %}
与默认评论表格略有不同,主要是禁止显示不需要的“姓名”,“电子邮件”和“网址”输入。
我的“/templates/comments/list.html”是:
<div class="comment_start"></div>
{% for comment in comment_list %}
<div class="comment">
{{ comment.comment }}
(from <a href="javascript:alert('show user profile/stats')">{{ comment.user }}</a> - {{ comment.submit_date|timesince }} ago)
</div>
{% endfor %}
在我想要表单的页面上,我先调用{% load comments %}
然后{% render_comment_form for [object] %
}来显示表单,或{% render_comment_list for [object] %}
生成对象的注释列表(替换[对象]与您的相应对象名称)。
这对我来说非常有用,并且仍然给我所有其他“免费”的东西,包括django评论(审核,标记,提要,多态关联等等)
答案 1 :(得分:4)
通过实际的评论框架子类化方法优雅地完成这项工作的整洁摘要,而不是将元素隐藏在表格/其他不整洁的黑客中,可以找到Django Comments: Want to remove user URL, not expand the model. How to?
基本上,你将CommentForm子类化,并更改其get_comment_create_data(self)方法,然后弹出你不想要的属性(例如电子邮件,网址等)
Ĵ
答案 2 :(得分:2)
您可以尝试overriding the comment form with a custom template只显示您想要的字段。