嗯,我有一個想法。添加您的custom comments form並覆蓋__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"
我試着用add_prefix這樣<高清add_prefix(個體經營,FIELD_NAME): self.prefix = 「test」 return self.prefix and('%s-%s'%(self.prefix,field_name))or field_name> and yes it render the form well:<> 但現在它引發了一個錯誤: 看來它不知道如何使用前綴來獲取字段。 有什麼想法? 感謝您的回覆! –
2010-04-09 10:50:20
請參閱更新文本。 – 2010-04-09 21:14:37