form.non_field_errors
たとえば、私の場合、Django Widget Tweaksを使用して、問題のフィールドの横にあるこのスクリーンショットのようなツールチップを表示したかったのです。
プロジェクト/アプリ/テンプレート/template.html
{% render_field field class="form-control is-invalid" data-toggle="tooltip" title=field.errors.as_text %}
テンプレート コードをいじって HTMLtitle
属性を 1 つにまとめて渡す代わりに、@oblalexのヒントに従い、アスタリスクのないメソッドを使用して独自の変更済みErrorList
クラスを作成しました。as_text
プロジェクト/アプリ/utils.py
from django.forms.utils import ErrorList
class MyErrorList(ErrorList):
"""
Modified version of the original Django ErrorList class.
ErrorList.as_text() does not print asterisks anymore.
"""
def as_text(self):
return '\n'.join(self)
as_text()
関数が上書きされたので、クラスをorの引数MyErrorList
として渡すことができます。私の場合はフォームセットのように:error_class
Form
ModelForm
ModelForm
プロジェクト/アプリ/views.py
from django.forms import formset_factory
from .forms import InputForm
from .utils import MyErrorList
def yourView(request):
InputFormSet = formset_factory(InputForm)
formset = InputFormSet(error_class=MyErrorList)
context = {'formset': formset}
return render(request, 'template.html', context)
ツールチップは、アスタリスクなしで次のようになります。
error_class
ビューでフォームをインスタンス化するたびに渡す代わりに、このワンライナーをフォーム クラスに追加するだけです ( @Danielからのこの回答を参照してください)。
プロジェクト/アプリ/forms.py
from django import forms
from .utils import MyErrorList
class InputForm(forms.ModelForm):
def __init__(self, *args, row, **kwargs):
super(InputForm, self).__init__(*args, **kwargs)
self.error_class = MyErrorList