以任何方式忽略字符串中的注入参数

时间:2013-04-27 14:42:26

标签: python django string

我在覆盖此django表单字段的默认错误消息时遇到问题:

forms.ModelMultipleChoiceField(
        ...
        error_messages={
            'invalid_choice': _("Given user is already a member.")
        }
    )

堆栈跟踪:

  File "/home/.../python2.7/site-packages/django/forms/models.py", line 1052, in clean
    raise ValidationError(self.error_messages['invalid_choice'] % val)
  File "/home/.../python2.7/site-packages/django/utils/functional.py", line 160, in __mod__
    return six.text_type(self) % rhs
TypeError: not all arguments converted during string formatting

我发现它实际上是一个错误https://code.djangoproject.com/ticket/17840

所以我的问题是:

是否可以忽略用self.error_messages['invalid_choice'] % val注入的参数,而不必升级到django trunk版本(这已经修复)?

'invalid_choice': _("Given user %ign is already a member.")的某些内容 python中的任何选项都适用于此?

1 个答案:

答案 0 :(得分:0)

这个怎么样:

>>> class Str2(str):
    def __mod__(self, arg):
        return self


>>> Str2('hallo')
'hallo'
>>> s = Str2('hallo')
>>> s % 3
'hallo'

我不知道Django所以可能会有一些问题在于测试字符串的类,但也可能会挂钩。