Как настроить форму комментариев Django?

Я пытаюсь настроить форму комментариев Джанго. внутри django.contrib.comments.forms Я заметил, что все формы полей объявлены в классе CommentDetailForm, который наследуется от CommentSecurityForm, Тогда я думаю, когда я пишу тег шаблона {% get_comment_form for order as form %}, он получает класс под названием CommentForm который наследует CommentDetailForm с полем honeypot.

Я хотел настроить форму комментариев так, чтобы она отображала только поле комментариев (а не дополнительные поля имени, адреса электронной почты или URL-адреса). Эта информация будет предоставлена ​​текущим вошедшим в систему пользователем. На самом деле, только вошли в систему пользователей с определенным UserProfile.user_type (UserProfile имеет внешний ключ к User) разрешено комментировать.

Любые советы о том, как этого добиться? Глядя на исходный код комментариев Django уже пугает меня, смеется.

РЕДАКТИРОВАТЬ:

Вот как выглядит шаблон комментария:

{% 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, а также URL,

1 ответ

Решение

Вы должны быть в состоянии сделать все это в шаблоне:

{% 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 %}
Другие вопросы по тегам