У меня есть несколько валидаторов, определенных в моей 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'),
},
}
Два вопроса :
Для валидатора RegEx сообщение об ошибке не заменяется моим пользовательским. В валидаторах для минимальных и максимальных значений я должен указать min_value и max_value для атрибутов, чтобы переопределить сообщение. Но какой атрибут я могу переопределить для валидатора RegEx? Более того, для любого данного валидатора, как я могу узнать, какой атрибут следует переопределить для error_message? Я хочу сделать это здесь, в Meta, а не как-то еще.
Я вижу, что для валидаторов MinValue и MaxValue мне доступны переменные в строке% (limit_value) d и % (show_value) d. Я хотел бы знать, как я могу узнать, какие переменные доступны мне для любого данного валидатора. И есть ли переменная, которую я могу использовать для verbose_name, например,% (verbose_name) d? Например, я мог бы заменить свой жестко запрограммированный номер устройства / набора переменной, а затем иметь возможность сделать сообщение об ошибке общим c.