Django 模型字段包含奇怪的属性 _("private")

Django model field contain strange attribute _("private")

目前我一直在学习Django,在阅读时,我遇到了下面的代码块,我不明白。

private = models.BooleanField(
        _('private'),
        default=False,
        help_text=_('theme is available ONLY for the site.'),
    )

上面的代码行包含 _('private'),我无法理解它的作用。我知道将 _ 用于与翻译相关的内容。为什么没有为 _("private") 声明属性名称?

我试图在网上找到答案,但一直找不到。

谢谢。

_('private') 设置属性 verbose_name.

前导下划线是国际化 (i18n) 机制使用的 ugettext 函数之一的常用函数别名。

这意味着当您拥有 i18n 运行 时,标签将被翻译成适当的 end-user 语言,如果翻译可用的话。

检查这个答案:

正如您在 source code of Django 中所见,FieldBooleanField 继承)的构造函数将 verbose_name 作为第一个位置参数。因此,您的第一个参数 (_('private')) 将受到影响 verbose_name.

但是,为了让您的代码更清晰,我建议将其作为关键字参数传递:

private = models.BooleanField(
    verbose_name=_('private'),
    default=False,
    help_text=_('theme is available ONLY for the site.'),
)

verbose_name 使用关键字参数将使您和阅读您代码的人更清楚,尤其是自 Django documentation does not give the order of positional arguments 以来。使用位置参数迫使读者阅读 Django 源代码以了解它是什么。

当你使用关键字参数时,你可以随意放置你的参数,所以这段代码将同样有效:

private = models.BooleanField(
    help_text=_('theme is available ONLY for the site.'),
    verbose_name=_('private'),
    default=False,
)