Django model中的内嵌类(Class Meta)python
内嵌类的做用:经过内嵌类 class Meta 能够为你的 model 定义 “元数据”git
class Book(models.Model): name = models.CharField(max_length=64) price = models.DecimalField(max_digits=5, decimal_place=2) ... # 定义内嵌类 class Meta class Meta: db_table = 'my_book' verbose_name = '书籍' verbose_name_pulral = verbose_name ...
注:定义model 元数据指:不是一个字段的任何数据,以下是一些可能用到的元数据数据库
”““ 没有一个选项是必需的. 是否添加 class Meta 到你的 model 彻底是可选的 ””“app
app_label函数
app_label这个选项只在一种状况下使用,就是你的模型类不在默认的应用(app)下的models.py文件中,这个时候就须要指定当前的 model 类 是哪一个应用程序的。 如:你在其它地方写了一个模型类,而这个模型类对应的应用是 app01,则这个时候须要指定:spa
app_label = 'app01'
db_tablecode
db_table就是用于自定义数据库表名对象
db_table = 'my_book'
db_tablespace排序
表空间 ---- 有些数据库有数据库表空间,如:Oracle。能够经过 db_tablespace来指定这个模型类对应的数据库表放在哪一个数据库表空间生命周期
get_latest_by
因为Django的管理方法中有个lastest()方法,就是获得最近一行记录。若是你的数据模型中有 DateField 或 DateTimeField 类型的字段,你能够经过这个选项来指定lastest()是按照哪一个字段进行选取的。
一个 DateField 或 DateTimeField 字段的名字. 若提供该选项, 该模块将拥有一个 get_latest() 函数以获得 "最新的" 对象(依据那个字段):
managed
因为Django会自动根据模型类生成映射的数据库表,若是你不但愿Django这么作,能够把managed的值设置为False。
默认值为True,这个选项为True时Django能够对数据库表进行 migrate或migrations、删除等操做(执行数据库迁移命令)。在这个时间Django将管理数据库中表的生命周期
若是为False的时候,不会对数据库表进行建立、删除等操做。能够用于现有表、数据库视图等,其余操做是同样的。
ordering
这个字段是告诉Django模型对象返回的记录结果集是按照哪一个字段排序的。好比下面的代码:
ordering=['order_date'] # 按订单升序排列 ordering=['-order_date'] # 按订单降序排列,-表示降序 ordering=['?order_date'] # 随机排序,?表示随机 ordering = ['-pub_date', 'author'] # 对 pub_date 降序,而后对 author 升序
须要注意的是:不论使用了多少个字段排序,admin只使用第一个字段
permissions
permissions主要是为了在Django Admin管理模块下使用的,若是你设置了这个属性可让指定的方法权限描述更清晰可读。
要建立一个对象所须要的额外的权限. 若是一个对象有 admin 设置, 则每一个对象的添加,删除和改变权限会人(依据该选项)自动建立.下面这个例子指定了一个附加权限
verbose_name
verbose_name的意思很简单,就是给你的模型类起一个更可读的名字:
verbose_name = "book"
verbose_name_plural
这个选项是指定,模型的复数形式是什么,好比:
verbose_name_plural = 'books'
若未提供该选项, Django 会使用 verbose_name + "s".