博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Metaclasses

Posted on 2019-04-25 22:21  棽棽  阅读(211)  评论(0编辑  收藏  举报

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