Django admin属性覆盖Regex的modelForm Meta中的error_消息和error_消息字符串中的变量

2024-05-21 08:48:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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 = {
            '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. 对于正则表达式验证程序,错误消息没有被替换为我的自定义消息。在最小值和最大值的验证器上,我必须为属性指定最小值和最大值以覆盖消息。但是对于正则表达式验证器,我应该覆盖哪个属性?此外,对于任何给定的验证器,我如何知道要覆盖错误消息的正确属性?我想在这里用Meta来做这个,而不是别的

  2. 我看到对于MinValue和MaxValue验证器,在字符串、%(limit_value)d和%(show_value)d中有一些变量可供我使用。我想知道如何知道对于任何给定的验证器,哪些变量对我可用。还有,是否有一个变量可以用于verbose_name,比如%(verbose_name)d?例如,我可以用一个变量替换我的硬编码单元/套件号,然后能够使错误消息通用


Tags: self消息fields属性initisvalueshow