django атрибут администратора для переопределения error_message в modelForm Meta для Regex и переменных в строках error_message - PullRequest
0 голосов
/ 29 мая 2020

У меня есть несколько валидаторов, определенных в моей ModelForm в Django Admin:

class AddressesAdminForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(AddressesAdminForm, self).__init__(*args, **kwargs)
        self.fields['unitorsuitenumber'].validators = [MinValueValidator(1), MaxValueValidator(1000)]
        self.fields['streetaddress'].validators = [RegexValidator(regExAlphanumericSpacesCommasPeriods)]

В Meta for ModelForm я могу переопределить error_messages:

        error_messages = {
            'unitorsuitenumber': {
                'min_value': _('Ensure Unit/Suite Number value is at least %(limit_value)d ' +
                              '(Current value is %(show_value)d).'),
                'max_value': _('Ensure Unit/Suite Number value is not more than %(limit_value)d ' +
                               '(Current value is %(show_value)d).'),
            },
            'streetaddress': {
                'regexvalidator': _('Only numbers, letters, periods, spaces and dashes are allowed'),
            },
        }

Два вопроса :

  1. Для валидатора RegEx сообщение об ошибке не заменяется моим пользовательским. В валидаторах для минимальных и максимальных значений я должен указать min_value и max_value для атрибутов, чтобы переопределить сообщение. Но какой атрибут я могу переопределить для валидатора RegEx? Более того, для любого данного валидатора, как я могу узнать, какой атрибут следует переопределить для error_message? Я хочу сделать это здесь, в Meta, а не как-то еще.

  2. Я вижу, что для валидаторов MinValue и MaxValue мне доступны переменные в строке% (limit_value) d и % (show_value) d. Я хотел бы знать, как я могу узнать, какие переменные доступны мне для любого данного валидатора. И есть ли переменная, которую я могу использовать для verbose_name, например,% (verbose_name) d? Например, я мог бы заменить свой жестко запрограммированный номер устройства / набора переменной, а затем иметь возможность сделать сообщение об ошибке общим c.

...