在Django中,作为字段参数的verbose_name和 meta内部类中的verbose_name有什么区别?

mrwjdhj3  于 2023-01-03  发布在  Go
关注(0)|答案(2)|浏览(185)

请看这个类:

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

  class Meta:
    verbose_name = "Product Name"

我看了Django的文档,上面写着:

  • 对于字段声明中的verbose_name:“字段的可读名称。”
  • 对于** meta**声明中的verbose_name:对象的可读名称,单数。

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

qyuhtwio

qyuhtwio1#

Meta中的verbose_name处理 model 的名称,而不是该模型的字段。
因此,它很可能应该是'Product',而不是'Product Name'

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

    class Meta:
        verbose_name = 'Product'

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

yr9zkbsy

yr9zkbsy2#

字段声明中的verbose_name在该字段的名称(这里我们指的是名称)不足以让用户解释那个字段到底是什么。例如,也许你想向用户提供一个更完整的名称描述,假设您指的是短名称。因此,最好将verbose_name设置为等于“短名称”。当你想在管理面板中以不同的方式向用户单独显示你的对象时,可以设置 meta声明中的name。当然,在 meta类中我们也有verbose_name_plural。当Django不能正确识别单词的复数形式时使用它。Django通过在复数中放置s来显示单词的结尾。但这并不总是正确的。例如,假设你有一个模型叫做Child。那么,现在你最好在 meta类中将verbose_name_plural的值设置为“children”。当你在Django中使用英语以外的语言时,上面的描述会更有用。

相关问题