2017-02-20 4 views
0

У меня есть модель с schema.Date участник с ограничением на его максимально допустимое значение. Валидация работает правильно, но мне нужно отобразить другой перевод для сгенерированной ошибки.Как настроить сообщения об ошибках проверки в Woost?

Могу ли я настроить перевод cocktail.schema.exceptions.MaxValueError Ошибка для моей модели?

+0

Попробуйте и сообщите нам, что произойдет. – feedMe

ответ

0

Это можно сделать, но точная процедура немного изменится после 2.11 «pacman» и более новых версий. Кроме того, он может чувствовать себя немного запутанным, если вы не знакомы с тем, как Cocktail получает переводы для членов схемы.

Вы хотите определить соответствующий ключ перевода эта модель:

Pacman и новые:

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

Старые выпуски:

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

Обратите внимание, как ключ компонует имя вашего члена с типом исключения, которое вы хотите определить сценарий для.

Обратите внимание, что хотя соглашение Pacman выглядит слишком долго по сравнению с более компактным шаблоном, используемым в предыдущих версиях, оно применяет правильное пространство имен, чтобы избежать коллизий имен и, кроме того, оно использует новый формат файла .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!" 
) 

Независимо от того, какую версию вы используете, вы можете взглянуть на cocktail.schema.Member.translate_error способ посмотреть, что делает коктейль под капотом, чтобы получить перевод.

Кроме того, если вы имеете дело с ошибками проверки, вероятно, вы используете адаптер схемы. Если это так, вам нужно подумать, принадлежит ли ваш собственный перевод на модели или на вашей адаптированной форме, в зависимости от того, насколько ваша настройка подходит для любого сценария, в котором это поле создает эту ошибку, или если это имеет смысл только на вашем особой формы. Если вы хотите ограничить его формой, замените myapp.models.MyModel на квалифицированное имя вашей формы.

Наконец, вы можете использовать динамический перевод, чтобы включать детали из объекта ошибки в вашем переводе:

Pacman и новые:

[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

Привет, Марти, большое вам спасибо за подробное объяснение. Мой пользовательский перевод ошибок работает как шарм! – javimarrero

Смежные вопросы