首页 > 其他分享 >Django 模型 Meta 选项详解

Django 模型 Meta 选项详解

时间:2023-02-23 18:56:42浏览次数:43  
标签:name ordering Django Meta Model 详解 permissions

1. 了解Meta内部类

  • 每个模型类(Model)下都有一个子类 Meta,这个子类就是定义元数据的地方。
  • Meta 类封装了一些数据库的信息,称之为 Model 的元数据。
  • Django 会将 Meta 中的元数据选项定义附加到 Model 中。
  • 常见的元数据定义有 db_table(数据表名称)、abstract(抽象类) 、ordering(字段排序) 等,
  • Meta 作为内部类,它定义的元数据可以让admin 管理后台对人类更加友好,数据的可读性更高。

Meta 定义的元数据相当于 Model 的配置信息,即不属于 Model 的字段,但是可以用来标识字段一些属性。

2. Meta类选项

  • abstract:abstract = True   # 定义当前的模型是不是一个抽象类。True表示这个 model 就是一个抽象类
  • ordering:排序规则
    •   
      ordering=["add_time"] #按照升序排序
      ordering=["-add_time"]#按照降序
      ordering=["?add_time"]#随机排序
      #同时指定多个字段来进行排序
      ordering=['add_time','-last_login_time']#先按升序,在按降序

       

  • verbose_name_plural: 模型类的复数名,主要用在管理后台的展示上;不设置的话,Django 会使用小写的模型名作为默认值,并且在结尾加上 s。
  • db_table:用于指定数据表的名称
    •   
      #定义该model在数据库中的表名称
        db_table = 'Students'
      #使用自定义的表名,可以通过以下属性
        table_name = 'my_owner_table'
  • app_lable:这个选项只在一种使用情形,就是你的模型不在默认的应用程序包下的 models.py 文件中,这时候需要指定你这个模型是哪个应用程序的 app_label = ‘app_name’。
  • managed:它是一个布尔类型的变量,默认为 Ture,代表 Django 会管理数据的生命周期,即利用 Django 提供的 syncdb 和 reset 命令可以完成创建和删除数据表。如果为 False,则不会对此模型执行数据库表创建或删除操作。
  • indexs:它是一个列表类型的元数据项,用来定义 Model 的索引,列表中的每一个元素都是 Index 类型的实例。
    •     
      Index 引自 django.db.models.indexes.Index
  • default_permissions:Django 默认会给每一个定义的 Model 设置三个权限即添加、更改、删除,它使用格式:default_permissions=('add','change','delete','view')
  • permissions:除了 Django 默认给 Model 添加的三个权限之外,还可以通过 permisssions 给 Model 添加额外的权限。不过 permissions 是一个包含二元组的元组或者列表,所以使用时应该注意格式,即 permissions=[(权限代码,权限名称)],示例如下所示:
    • permissions = [(have_read_permission', '有读的权限')]
  • unique_together:这个选项用于下面情形:当你需要通过两个字段保持唯一性时使用。比如用户的姓名(name)和 身份证号码(ID number)两者的组合必须是唯一的,那么需要这样设置:
    •   
      unique_together = (("first_name", "last_name"),)

      一个 ManyToManyField 不能包含在 unique_together 中。如果你需要验证 ManyToManyField 字段的唯一验证,尝试使用 through 属性进行关联。

  • proxy:默认值为为 False, 如果设置成 Ture,则表示为基类、父类的代理模型。
  • db_tablespace:表空间,用于优化数据库性能,常用于 Oracle、PostgerSQL 数据库。MySQL 数据库不支持表空间,所以当数据存储后端数据库不支持的时候,Django 会在自动忽略这个元数据选项。
  • get_latest_by:指定一个 DateField 或者 DateTimeField 字段的名字,即 model 的属性名字。使用示例如下:
    •   
      get_latest_by = "order_date"

       

  • order_with_respect_to:这个选项一般用于多对多的关系中,它指向一个关联对象并将该对象进行排序,使用元数据项后你会得到一个 get_xxx_order() 和set_xxx_order() 的方法,通过它们你可以设置或者得到排序的对象。

 

标签:name,ordering,Django,Meta,Model,详解,permissions
From: https://www.cnblogs.com/fyyp/p/17149077.html

相关文章

  • Linux top 命令详解
    如图:前五行分别为:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)进程总数、运行中的进程数、睡......
  • 2021全国职业院校技能大赛真题-网络系统管理项目-模块C路由交换部分答案详解
    有线网络配置为优化骨干链路上的流量,需要在全网Trunk链路上做VLAN修剪。所有设备switchportmodetrunkswitchporttrunkallowedvlanonly10,20,30,40,100//在所有需......
  • 2021全国职业院校技能大赛真题-网络系统管理项目-模块C路由交换部分答案详解
    在S3和S4上配置VRRP,实现主机的网关冗余,所配置的参数要求如表1所示。其中,S3、S4上配置各VRRP组中的高优先级设置为150,低优先级设置为120S3interfaceVLAN10ip......
  • Nginx之location详解
    Nginx之location详解https://huaweicloud.csdn.net/63a570c2b878a54545947421.html?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Ed......
  • Django框架课-创建游戏界面 (2)
    Django框架课-创建游戏界面(2)bug修改bug1:获取鼠标在画布中的相对坐标之前写的只是直接获取在屏幕中的坐标,默认画布是在左上角的,如果acapp的窗口不在屏幕左上角,获取到......
  • Django路由层
    目录Django路由pathDjango自带url参数转换器url转换器具体使用方法re_path路由匹配冲突re_path无名有名分组无名分组有名分组反向解析反向解析静态路由反向解析动态路由Dj......
  • Unity UGUI系列九 Text TextMeshPro 详解
    参考[专栏精选]TextMeshPro插件TextMeshPro使用说明TextMeshPro中文字体生成和字体材质更换新一代Unity文本组件TextMeshPro系列教程【Unity学习笔记】TextMeshP......
  • metasploit2-practice-cnblog
    Metasploittable2打靶教程本次靶机练习主要熟悉:高危端口利用;metasploit中search,show及各个模块使用。一、环境准备1.把靶场放在vmware打开,启用nat模式:2.启用kali......
  • Django rest_framework
    serializersfromrest_frameworkimportserializersclassSerializerClass(serializers.ModelSerializer):classMeta:model=ModelClass#1.......
  • Django 初步运行过程分析笔记
    2.django运行过程分析第一个过程分析:django启动过程pythonmangage.pyrunserver0.0.0.0:8000这个命令先被python的sys.argv接收起来,保存成[mangage.py,runserver,0.0......