【问题标题】:In Django, what's the difference between verbose_name as a field parameter, and verbose_name in a Meta inner class?在 Django 中,作为字段参数的 verbose_name 和 Meta 内部类中的 verbose_name 有什么区别?
【发布时间】:2023-01-03 00:00:44
【问题描述】:

考虑这个类:

class Product(models.Model):
  name = models.Charfield(verbose_name="Product Name", max_length=255)

  class Meta:
    verbose_name = "Product Name"

我查看了 Django 文档,它说:

  • verbose_name 在一个场地声明:“该字段的人类可读名称。”
  • 对于verbose_name在一个声明:“对象的人类可读名称,单数”。

我什么时候会在运行时看到 verbose_name 清单?在表单渲染中?在 Django 管理员中?

【问题讨论】:

  • verbose_name in a field declaration 是您在创建或编辑字段时在管理员中看到的内容,或者在模板中呈现时在表单中看到的内容。
  • verbose_name in a Meta declaration 是您在管理页面中看到的。什么时候使用它?让我们说我的母语是俄语(或其他语言),但我的型号名称是英文的,让公司的工作人员知道管理员中的型号名称我将使用verbose_name and verbose_name_plural in a Meta declaration使其不稳定。但一般来说django admin 你会看到它会通过示例以复数形式写入模型名称。
  • 让我们假设您的型号名称是 Country 如果您不添加 verbose_name_plural='countries' in the meta declaration' 那么默认情况下 django 将在国家/地区添加 s 并且它将是 Countrys 这是不正确的。只是一个例子:)对不起我的英语

标签: python django django-models


【解决方案1】:

Meta 中的 verbose_name 处理名称模型,而不是该模型的字段。

因此它可能应该是'Product',而不是'Product Name'

class Product(models.Model):
    name = models.Charfield(verbose_name='Product Name', max_length=255)

    class Meta:
        verbose_name = 'Product'

因此,这在模型管理中指定了表名,而字段的 verbose_name 将显示在 ModelForms 中,当您显示或编辑记录时。

【讨论】:

    猜你喜欢
    • 2020-05-30
    • 2020-12-29
    • 2019-08-09
    • 2010-10-03
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多