更新时间:2023年01月11日14时08分 来源:传智教育 浏览次数:
Django模型的元属性用于设置数据表的一些属性,例如排序字段、数据表名、字段单复数等。通过在模型类中添加内部类Meta的方式可以定义模型的元属性。例如,在模型类BookInfo中设置数据表名称,代码如下:
class BookInfo(model.Model): ... # 定义的字段 class Meta: db_table = 'tb_bookinfo'
以上代码在Meta中通过db_table属性设置数据名为“tb_bookinfo”。
除db_table元属性外,Django还提供了十几种元属性,接下来对常用的元属性进行介绍。
1.abstract
用于设置模型是否为抽象类,若abstract=True,则表示模型是抽象类。抽象类用来定义多个模型类的共有信息,在Meta类中设置abstract=True,这个模型不能被实例化,只能作为其他类型的基类。
2.app_label
如果定义的模型没有在配置文件的INSTALLED_APPS项中注册,那么必须使用app_label选项在Meta类中指明当前模型所属的应用。
3.ordering
ordering属性用于设置模型字段的排序方式,该属性默认按照升序排序,取值可以是由字段名组成的元组或列表。例如,在BookInfo类中使用ordering属性设置数据表按id字段升序排序,代码如下:
ordering = 'id'
如果想设置数据表按某个字段降序排序,可在字段前加“-”符号。示例如下:
ordering = ['-id']
如果ordering中存在多个字段,默认优先按照第一个字段进行排序,如果第一个字段无法为记录排序,则再根据第二个字段进行排序。示例如下:
ordering = ['id','score']
上述示例表示优先按照“id”进行升序排序,如果只根据“id”无法为记录排序,再根据“score”进行升序排序。
4.verbose_name
元属性verbose_name用于设置显示在后台管理系统页面上的、直观可读的数据表名。示例如下:
verbose_name = "book" verbose_name = "图书"
5.verbose_name_plural
元属性verbose_name_plural用于设置模型类在后台管理系统页面上显示的表名的复数形式。示例如下:
verbose_name_plural = "books"
如果没有指定verbose_name_plural,那么默认以verbose_name加上“s”作为复数形式。例如,verbose_name值为book,那么模型类名的复数形式为books。