• Django model中的内嵌类(Class Meta)


    Django model中的内嵌类(Class Meta)

    内嵌类的作用:通过内嵌类 class Meta 可以为你的 model 定义 “元数据”

    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_label

    ​ app_label这个选项只在一种情况下使用,就是你的模型类不在默认的应用(app)下的models.py文件中,这个时候就需要指定当前的 model 类 是哪个应用程序的。
    如:你在其它地方写了一个模型类,而这个模型类对应的应用是 app01,则这个时候需要指定:

    app_label = 'app01'
    

    db_table

    ​ 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".

  • 相关阅读:
    面试系统化学习和准备(一)——今日事必须今日毕
    20220324准备
    面试系统化学习和准备(二)——docker篇
    20220325目标
    任务调度系统
    二叉树最大路径和
    count(*)这么慢,我该怎么办?
    动态规划最长连续递增序列
    设置工作模式与环境(上):建立计算机
    Django 数据库配置(二)
  • 原文地址:https://www.cnblogs.com/chmily/p/11935057.html
Copyright © 2020-2023  润新知