2

我在覆盖此 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 版本(这已经修复)?

类似于python中的任何选项的东西'invalid_choice': _("Given user %ign is already a member.")

4

1 回答 1

0

那这个呢:

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


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

我不了解 Django,因此测试字符串的类可能会出现一些问题,但这也可能会被钩住。

于 2013-04-27T17:42:28.137 回答