Django models Django TypeError尝试使用自定义基本ModelForm或自定义错误\u类时出错

Django models Django TypeError尝试使用自定义基本ModelForm或自定义错误\u类时出错,django-models,python-2.7,django-forms,Django Models,Python 2.7,Django Forms,我想在表单中呈现错误类。我看到了这个定义,并将其放入我的应用程序目录中的一个文件中: 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

我想在表单中呈现错误类。我看到了这个定义,并将其放入我的应用程序目录中的一个文件中:

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 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)
我在提交带有错误的表单时遇到此错误: TypeError:“模块”对象不可调用 /字段中的usr/local/lib/python2.7/dist-packages/django/forms/forms.py,第293行

这在form.is\u valid()行。如果我不使用error_类,它可以正常工作(只有在没有所需错误的情况下)

接下来,我尝试创建一个基本ModelForm类,该类使用我的应用程序目录中的DivErrorList:

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 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个) /主页/pcm/工作区/sportscaster/sporty/forms.py in,第5行


这两个我都不知道。有什么想法吗?我更喜欢后者,因为我所有的表单都希望用于错误报告(我也想实际将表单呈现为div,这是我的观点。

在谷歌搜索时,我发现了一个关于类型错误和元类基础的讨论。问题是我在文件MyModelForm.py中有一个类MyModelForm,然后导入模块试图将其作为类使用:

from sporty import MyModelForm
解决方案是将MyModelForm类放入文件modelforms.py中,然后执行以下操作:

from sporty.modelforms import MyModelForm

我对DivErrorList也做了同样的操作,将类放在modelforms.py文件中。

BTW,该模型只有两个字段,一个char字段不为NULL,一个url字段为NULL。