Ну, у меня есть идея. Добавьте форму комментариев и переопределите __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"