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ますか?

'invalid_choice': _("Given user %ign is already a member.") Any options in python for this?の行に沿った何か?

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 に答える