我想要在窗體中渲染error_class。我看到了這個定義,並把它放到一個文件在我的應用程序目錄:嘗試使用自定義基礎ModelForm或自定義error_class時出現Django TypeError
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():
我得到這個錯誤,當提交表單一個錯誤: 類型錯誤:「模塊」對象不是可調用 /usr/local/lib/python2.7/dist-packages/django/forms/forms.py在_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,因爲某些點。
順便說一句,該模型只有兩個字段,一個非空的char字段和一個null字段的url字段。 – pcm