Django:ValidationError为ugettext或ugettext_lazy

时间:2018-06-07 08:49:08

标签: django

我现在读了很多关于ugettext和ugettext_lazy的文章。我理解_lazy主要用于这些事情:

  • models.py(fields,verbose_name,help_text,methods SHORT_DESCRIPTION);
  • forms.py(labels,help_text,empty_label);
  • apps.py(verbose_name)

ugettext for these:

  • views.py
  • 与在此期间执行的视图函数类似的其他模块 请求流程

Source

但是我仍然不确定,如果ValidationError也可以用ugettext_lazy完成吗?

from django.utils.translation import ugettext as _

    def check_if_form_is_empty(self):
        [...]
        if not quantities:
            raise forms.ValidationError(
                    _("You didn't choose any tickets."), # TODO _ for translations
                    code='no_tickets',
            )

1 个答案:

答案 0 :(得分:0)

你还没有真正理解ugettext_lazy的观点。这适用于您还不知道当前语言是什么的地方;特别是在类级属性中,例如模型和表单上的字段。在定义的那一点上没有请求,所以你必须使用惰性方法。

您的代码位于方法内部,虽然您没有显示它的调用位置,但它似乎是某种验证,只会在用户操作的上下文中调用。所以不,你不需要在这里使用惰性方法。