我想在表单中进行 error_class 渲染。我看到了这个定义并将其放入我的应用程序目录中的一个文件中:
from django.forms.util import ErrorList
class DivErrorList(ErrorList):
def __unicode__(self):
return self.as_divs()
def as_divs(self):
if not self: return u''
return u'<div class="errorlist">%s</div>' % \
''.join([u'<div class="error">%s</div>' % e for e in self])
但是,当我尝试在我的视图中使用它时:
from sporty import DivErrorList
...
form = LocationForm(request.POST or None, error_class=DivErrorList)
if form.is_valid():
提交表单时出现此错误:TypeError: 'module' object is not callable /usr/local/lib/python2.7/dist-packages/django/forms/forms.py in _clean_fields,第 293 行。
这是在 form.is_valid() 行。如果我不使用 error_class,它可以正常工作(只有没有所需的 .
接下来,我尝试在我的应用程序目录中创建一个使用 DivErrorList 的基本 ModelForm 类:
from django.forms import ModelForm
from sporty import DivErrorList
class MyModelForm(ModelForm):
def __init__(self, *args, **kwargs):
kwargs_new = {'error_class': DivErrorList}
kwargs_new.update(kwargs)
super(MyModelForm, self).__init__(*args, **kwargs_new)
然后我基于该类定义了我的 ModelForm 并且不再在表单创建中使用 error_class 参数:
from sporty import MyModelForm
from sporty.models import Location
class LocationForm(MyModelForm):
class Meta:
model = Location
现在,当我尝试查看表单(不提交任何数据)时,我收到此错误:TypeError:调用元类基础模块时出错。init () 最多接受 2 个参数(给定 3 个) /home/pcm/workspace/sportscaster/sporty/forms.py 在第 5 行
我对这两个都不知所措。有任何想法吗?我更喜欢后者,因为我的所有表单都希望用于错误报告(在某些方面,我也希望将表单实际呈现为 div。