如何正确使用Django模型的verbose_name和verbose_name_plural属性
verbose_name='作者')上面代码中,verbose_name = '图书'verbose_name_plural = '图书列表'```上述代码中。
在Django开发中,我们经常需要使用模型来操作数据库。而每个模型都有一个名称,这个名称会在后台管理界面、表单验证及错误提示等地方被用到。为了更好地定制这些名称,Django提供了两个属性:verbose_name和verbose_name_plural。
什么是verbose_name和verbose_name_plural
在Django的模型中,每个字段都有一个默认的名称(例如CharField默认为“charfield”),如果没有指定任何其他选项,则该字段将作为其显示标签(label)显示。但是,在某些情况下,默认标签可能不够描述该字段的含义。
因此,我们可以通过设置 verbose_name 属性来自定义该字段的显示标签。例如:
“`
class Book(models.Model):
title = models.CharField(max_length=100, verbose_name=’书名’)
author = models.CharField(max_length=50, verbose_name=’作者’)
上面代码中,在创建Book模型时给title和author字段分别设置了 verbose_name 选项。
除此之外,还有一个类似于 verbose_name 的属性: verbose_name_plural 。它用于指定复数形式的对象名字。例如:
# …
class Meta:
verbose_name = ‘图书’
verbose_name_plural = ‘图书列表’
“`
上述代码中,在 Meta 类里设置了两个选项:verbose_name 和 verbose_name_plural。
verbose_name和verbose_name_plural的使用场景
在实际开发中,我们通常会将 verbose_name 和 verbose_name_plural 属性用于以下几个方面:
1. 后台管理界面
Django提供了一个强大的后台管理系统,它可以让我们很方便地对数据库进行操作。但是,默认情况下,在后台管理界面中显示的模型名可能并不符合我们的需求。因此,我们可以使用 verbose_name 和 verbose_name_plural 来自定义对象名称。
例如下图所示:
![image-20211105100532409](-res/raw/master/202111051005338.png)
上图中,在Book模型里分别设置了 title 和 author 的显示标签,并且在 Meta 类里设置了 verbose_name 和 verbose_name_plural 属性。这样,在后台管理界面中就能看到更加友好的名称。
![如何正确使用Django模型的verbose_name和verbose_name_plural属性缩略图 如何正确使用Django模型的verbose_name和verbose_name_plural属性](https://www.72715.net/wp-content/uploads/2023/05/8d9cb822808234ba7e6a5e793a139573.png)
2. 表单验证和错误提示
当用户提交表单时,如果有字段未填写或填写格式错误,则需要给出相应的提示信息。在这种情况下,verbose_name 和 verbose_name_plural 属性也能派上用场。
![image-20211105100636624](-res/raw/master/202111051006381.png)
上图中,在 BookForm 中分别设置了 title 和 author 的显示标签,并且在 Book 模型里设置了 verbose_name 属性。这样当用户提交表单时,如果有字段未填写,则会弹出相应的提示信息。
3. API返回值
当我们使用 Django REST framework 等框架开发API时,verbose_name 和 verbose_name_plural 属性也能用于自定义返回值。例如:
class BookSerializer(serializers.ModelSerializer):
model = Book
fields = (‘id’, ‘title’, ‘author’)
extra_kwargs = {
‘title’: {‘label’: ‘书名’},
‘author’: {‘label’: ‘作者’}
}
上述代码中,在BookSerializer里分别设置了 title 和 author 的显示标签,并且在extra_kwargs里指定了 verbose_name 选项。这样,在API返回值中就能看到更加友好的名称。
注意事项
1. verbose_name 和 verbose_name_plural 属性只对模型类有效,不能用于模型实例;
2. 如果你想完全掌控对象名称,可以不使用默认名称而直接指定一个字符串作为verbose_name和verbose_name_plural的值;
3. 如果没有设置 verbose_name 或者 verbose_name_plural 属性,则Django将会自动根据模型名生成默认标签(例如“Book”将被转换为“book”);
4. 在 Meta 中必须同时设置两个选项:verbose_name 和 verbose_name_plural。
通过本文的讲解,我们了解到了 Django 模型中的两个属性:verbose_name 和 verbose_name_plural。它们可以帮助我们更好地定制显示标签,并且适用于后台管理界面、表单验证和API返回值等多个场景。
在使用时,需要注意 Meta 中必须同时设置两个选项:verbose_name 和 verbose_name_plural。另外,如果没有设置 verbose_name 或者 verbose_name_plural 属性,则Django将会自动根据模型名生成默认标签。
最后,希望本文能够帮助到大家,让大家更好地掌握 Django 模型的相关知识。