2017-02-20 4 views
0

私はスキーマのモデルを持っています。最大許容値に制限があります。メンバーです。検証は正しく動作しますが、生成されたエラーに対して別の変換を表示する必要があります。Woostで検証エラーメッセージをカスタマイズするにはどうすればよいですか?

cocktail.schema.exceptions.MaxValueError私のモデルの翻訳をカスタマイズできますか?

+0

何が起こったのかお試しください。 – feedMe

答えて

0

これは可能ですが、正確な手順はwoost 2.11 "pacman"以降のリリースで少し変わります。また、Cocktailがスキーマメンバーの翻訳をどのように取得するかに精通していなければ、少し複雑に感じることができます。

パックマンと新しい:

myapp.models.mymodule.MyModel.members.my_member.errors.cocktail.schema.exceptions.MaxValueError 

古いリリース:キーを構成する方法を

MyModel.my_member-error: cocktail.schema.exceptions.MaxValueError 

お知らせ

あなたはこのパターン変換キー照合を定義したいです定義する例外の型を持つメンバーの名前スクリーニング

以前のバージョンで使用されていたよりコンパクトなパターンと比較して、パックマンのコンベンションは長すぎると思われますが、命名の衝突を避けるために適切な名前空間が適用され、さらに新しい.stringsファイル形式を利用するこのような何かを書く:

[myapp.models.mymodule.MyModel] 

    [members] 

     [my_member] 
     # Your member's name, and other related strings 

      [errors] 
      # You can put all your error customizations here 

       [cocktail.schema.exceptions.MaxValueError] 
       en: Member XYZ is too high! 
       es: El campo XYZ es demasiado grande! 

古いリリースで同等のは、あなたのstrings.pyファイルに以下を追加することです:

translations.define(
    "MyModel.my_member-error: cocktail.schema.exceptions.MaxValueError", 
    en = u"Member XYZ is too high!", 
    es = u"El campo XYZ es demasiado grande!" 
) 

にかかわらず、使用しているバージョンの、あなたが見ることができます012でメソッドを使用して、翻訳を取得するためのフードの下でのカクテルの動作を確認します。

また、検証エラーを処理する場合は、おそらくスキーマアダプタを使用している可能性があります。その場合は、このフィールドがこのエラーを生成するシナリオに対してカスタマイズが適切かどうかに応じて、カスタム翻訳がモデルまたは適合したフォームスキーマに属しているかどうかを考えたいと思うでしょう。特定のフォーム。フォームに限定したい場合は、myapp.models.MyModelをフォームの修飾名に置き換えます。

パックマンと新しい:

[myapp.models.mymodule.MyModel] 

    [members] 

     [my_member] 
     # Your member's name, and other related strings 

      [errors] 
      # You can put all your error customizations here 

       [cocktail.schema.exceptions.MaxValueError(member, error)] 
       en: Member t{member} is too high! The maximum permitted value is ${member.translate_value(error.max)} 
       es: El campo t{member} es demasiado grande! El valor máximo permitido es ${member.translate_value(error.max)} 

古いリリース:

最後に、あなたはあなたの翻訳にエラーオブジェクトから詳細を含めるために、動的変換を使用する場合があります

translations.define(
    "MyModel.my_member-error: cocktail.schema.exceptions.MaxValueError", 
    en = lambda instance: u"Member %s is too high! The maximum allowed value is %s" % (translations(instance.member, instance.member.translate_value(instance.max))), 
    es = lambda instance: u"El campo %s es demasiado grande! El valor máximo permitido es %s" % (translations(instance.member, instance.member.translate_value(instance.max))), 
) 
+0

こんにちはMarti、あなたの詳細な説明には本当にありがとうございます。私のカスタムエラー翻訳は魅力のように機能します! – javimarrero

関連する問題