首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django模型-字段语法

Django模型-字段语法
EN

Stack Overflow用户
提问于 2018-11-25 00:24:21
回答 1查看 329关注 0票数 2

创建django模型时有关一些语法的快速问题。如果您查看下面的示例models.py文件,您将看到四个字段中的每个字段都包含字段名的重复,在我的下划线前面的括号中有一个字符串。我假设这是某种形式的可视化表示,但在admin中,这似乎是自动发生的,其中包含了_(‘字段名’)。

代码语言:javascript
复制
class User(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(_('email address'), unique=True)
    first_name = models.CharField(_('first name'), max_length=30, blank=True)
    last_name = models.CharField(_('last name'), max_length=30, blank=True)
    date_joined = models.DateTimeField(_('date joined'), auto_now_add=True)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-25 01:32:38

所有内置字段类型都继承自字段类。如果查看该类的__init__()调用,您将看到函数中的第一个参数是verbose_name参数。这就告诉我们这些字符串映射到什么。

_('some text')构造是一种相当流行的国际化语法(也称为i18n)。我在PHP等其他语言中见过这种语法。这允许在翻译代码时以各种语言呈现详细的名称。正如您在上面的注释中所指出的,函数ugettext_lazy是作为别名_导入的。这允许程序员(所有的程序员都是懒惰的)在中键入ugettext_lazy('some text')而不是ugettext_lazy('some text')--每个需要翻译文本的位置。由于应用程序中可能存在数百(或数千)硬编码字符串,因此从长远来看,它可以节省程序员大量时间。

这是一次丑陋的黑客攻击,但它完成了任务。在Python中,我特别不喜欢它,因为它覆盖了有时有用的_名称,当您想丢弃一个值时,它常常被用作占位符变量名。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53463621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档