Добавить префикс do Django в форме комментария - PullRequest
0 голосов
/ 07 апреля 2010

Я хотел бы добавить префикс к каждой форме комментариев django.Я использую формы множественных комментариев на одной и той же странице и, несмотря на это, работает хорошо, мне не нравится иметь много полей ввода с таким же атрибутом id, как <input type="text" name="honeypot" id="id_honeypot" />.

Итак, есть ли способ сказатьDjango добавить префикс для каждого экземпляра формы?Я знаю, что могу сделать это с другими формами, когда я создаю экземпляр формы таким образом newform = CustomForm(prefix="a"), но используя систему комментариев Django, эта часть обрабатывается тегом шаблона комментария {% get_comment_form for [object] as [varname] %}.

Могу ли я указать тегу шаблона добавить префикс?

1 Ответ

2 голосов
/ 08 апреля 2010

Ну, у меня есть идея. Добавьте форму комментариев и переопределите __init__. Вы можете сгенерировать префикс из target_object и установить его на self.prefix:

def __init__(self, target_object, data=None, initial=None):
    ...

Или лучше переопределить BaseForm.add_prefix:

def add_prefix(self, field_name):
    """
    Returns the field name with a prefix appended, if this Form has a
    prefix set.

    Subclasses may wish to override.
    """
    return self.prefix and ('%s-%s' % (self.prefix, field_name)) or field_name

Обновление: Да, ты прав. Префикс не работает, основная причина - код в contrib.comments.views.comments.post_comment. Поэтому я перечитал ваш вопрос и, если вам нужно только изменить атрибут "id", используйте BaseForm.auto_id:

class CustomCommentForm(CommentForm):
    def __init__(self, target_object, data=None, initial=None):
        super(CustomCommentForm, self).__init__(target_object, data, initial)
        idprefix = target_object.__class__.__name__.lower()
        self.auto_id = idprefix + "_%s"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...