【发布时间】:2015-08-20 22:37:39
【问题描述】:
当我使用此代码自定义表单的小部件时,它不会验证。如果我注释掉 def __init__(..) 它工作正常。
class CommentForm(forms.Form):
def __init__(self, *args, **kwargs):
self.wysiwyg = kwargs.pop('wysiwyg', False)
super(CommentForm, self).__init__()
if self.wysiwyg:
self.fields['comment_text'].widget = SummernoteWidget()
else:
self.fields['comment_text'].widget = forms.Textarea(attrs={'rows':2})
comment_text = forms.CharField()
到目前为止,我已经能够解决问题,工作表单(没有 init)和无效表单之间的区别是:
init 的表单无效:
CommentForm bound=False, valid=Unknown, fields=(comment_text)
有效形式:
CommentForm bound=True, valid=Unknown, fields=(comment_text)
问题是否存在,我该如何解决?
谢谢!
【问题讨论】:
-
一个小提示-您没有将 args 和 kwargs 发送到 super
-
这不是次要的,而是主要的。当您没有将 args 和 kwargs 从 super 传递到 init 时,表单将不会接收 POST 数据。