1、Metaclasses
Metaclasses是创建class(对象)的东西,它们是描述类的类,我们经常使用所理解的对象和class以及Metaclasses可以理解成以下形式:
MyClass = MetaClass()
MyObject = MyClass()
2、django模型类中的内部类meta
django模型类中的meta是一个内部类,它用于定义一些模型类的行为特征,用于设置类的元信息
定义方式如下:
class Student(models.Model): ...... #模型类的属性相关定义 class Meta: ...... # Meta类的属性
3、Meta类的部分属性
(1)abstract
abstract属性定义当前的模型类是否为一个抽象类,在django模型类中一个类对应一张数据库表,而模型类中定义Meta类的abstract属性为True时,当前模型类即为一个抽象类,抽象类不会有数据库表,一般用它来归纳一些公共属性字段,继承该类的子类能够继承这些字段
class Student(models.Model): ...... #模型类的属性相关定义 class Meta: abstract=True
(2)db_table
db_table指明该模型类对应的数据库表的名字,默认为应用名小写_类名小写
class Student(models.Model): ...... #模型类的属性相关定义 class Meta: db_table='student'
(3)ordering
对象的默认排序字段
class Student(models.Model): ...... #模型类的属性相关定义 class Meta: ordering=["id"] #按id升序 ordering=["-id"] #按id降序
注意:排序会增加数据库的开销,相当于添加了order by