フォームでの 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, line 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 としてもレンダリングしたいと思います。