как переопределить стандартную ошибку проверки формы Django - PullRequest
0 голосов
/ 24 апреля 2019

Я пробую это, но это не работает. По умолчанию отображается только сообщение об ошибке. Пожалуйста, помогите ............

from django import forms
from SharedApps_Application.models import certificateDb
from django.contrib.admin.widgets import AdminDateWidget
from django.forms.fields import DateField

my_default_errors = {
    'required': 'Application field is required',
}

class CertificateForm(forms.ModelForm):

    startdate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
    expiredate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
    application = forms.CharField(error_messages = my_default_errors)
    class Meta:
        model = certificateDb
        fields = ('application', 'startdate', 'expiredate', 'environment_type','File' )

Скриншот

[1]: https://i.stack.imgur.com/8zhM6.png

обновление

from django import forms
from SharedApps_Application.models import certificateDb
from django.contrib.admin.widgets import AdminDateWidget
from django.forms.fields import DateField
class CertificateForm(forms.ModelForm):

    startdate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
    expiredate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
    application = forms.CharField()
    class Meta:
        model = certificateDb
        fields = ('application', 'startdate', 'expiredate', 'environment_type','File' )

        error_messages = {
            'application': {
                'required': ("Application field is required"),
            },
            }

1 Ответ

0 голосов
/ 24 апреля 2019

На основе только что добавленного снимка экрана вы хотите изменить сообщения об ошибках, которые браузер отображает для клиента.Это можно сделать, добавив атрибут oninvalid к вашему полю.

Вот как это делается в вашем файле forms.py:

from django import forms
from SharedApps_Application.models import certificateDb
from django.contrib.admin.widgets import AdminDateWidget
from django.forms.fields import DateField


class CertificateForm(forms.ModelForm):
    app_attributes = {'oninvalid': 'this.setCustomValidity("Application field is required")', 'oninput': 'this.setCustomValidity("")'}
    startdate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
    expiredate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
    application = forms.CharField(widget=forms.TextInput(attrs=app_attributes)
    class Meta:
        model = certificateDb
        fields = ('application', 'startdate', 'expiredate', 'environment_type','File' )

        error_messages = {
            'application': {
                'required': ("Application field is required"),
            },
            }

Предполагается, что поле необходимопереопределить это 'application'.Добавьте словарь error_messages под мета-класс вашего класса следующим образом:

СТАРЫЙ ОТВЕТ - Переопределение сообщений об ошибках проверки форм Django

from django import forms
from SharedApps_Application.models import certificateDb
from django.contrib.admin.widgets import AdminDateWidget
from django.forms.fields import DateField


class CertificateForm(forms.ModelForm):

    startdate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
    expiredate = forms.DateField(widget = forms.SelectDateWidget(years=range(1995, 2100)))
    application = forms.CharField()
    class Meta:
        model = certificateDb
        fields = ('application', 'startdate', 'expiredate', 'environment_type','File' )

        error_messages = {
            'application': {
                'required': ("Application field is required"),
            },
            }
...