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

Metaclasses的更多相关文章

  1. Understanding Python metaclasses

    转载:https://blog.ionelmc.ro/2015/02/09/understanding-python-metaclasses/ None of the existing article ...

  2. Python type类具体的三大分类:metaclasses,classes,instance

    Python type类视角中的对象体系需要我们不断的学习,其中我们使用的时候需要注意.下面我们就看看如何才能更好的运用Python type类.下面的文章希望大家有所收获. 在单纯的Python t ...

  3. python类:描述器Descriptors和元类MetaClasses

    http://blog.csdn.net/pipisorry/article/details/50444769 描述器(Descriptors) 描述器决定了对象属性是如何被访问的.描述器的作用是定制 ...

  4. Python高级特性(3): Classes和Metaclasses(转)

    原文:Python高级特性(3): Classes和Metaclasses 类和对象 类和函数一样都是Python中的对象.当一个类定义完成之后,Python将创建一个“类对象”并将其赋值给一个同名变 ...

  5. Python metaclasses

    metaclasses元类:就像对象是类的实例一样,类是它的元类的实例.调用元类可以创建类. metaclass使用type来创建类,type可以被继承生成新的元类. 这个和C#的反射很相似. 下面是 ...

  6. Classes and metaclasses

    http://www.sealiesoftware.com/blog/archive/2009/04/14/objc_explain_Classes_and_metaclasses.html Obje ...

  7. Python 元类 - Metaclasses

    Python 元类 - Metaclasses 默认情况下儿, classes 是有 type() 构造的. 类的结构体在一个新的 namespace 被执行, 类的名字 class name 绑定( ...

  8. Python——五分钟理解元类(metaclasses)

    “元类的魔幻变化比 99% 的用户所担心的更多,当你搞不懂是否真的需要用它的时候,就是不需要.” —Tim Peters 本文源于在 PyCon UK 2008 上的一个快速演讲. 元类被称为 Pyt ...

  9. 成为OpenStack工程师

    OpenStack Hacker 态度:开放.主动.沟通 影响力:能说.能写.能分享 四化:自动化.流程化.系统化.文档化 0级 掌握一些基本技能:python.c.linux.git.unittes ...

随机推荐

  1. 20175224 2018-2019-2 《Java程序设计》第九周学习总结

    教材学习内容总结 第11章 JDBC与MySOLz数据库 MySQL数据库管理系统,简称MySQL. 使用步骤: 启动MySQL数据库服务 器建立连接: 建立数据库: 创建表等操作. JDBC:为专门 ...

  2. 编写一个求和函数sum,使输入sum(2)(3)或输入sum(2,3),输出结果都为5

    昨天的笔试题,做的一塌糊涂,题目考的都很基础而且很细,手写代码对我来说是硬伤啊.其中有一道是这个,然而看到题目的时候,根本没有想到arguments:然后现在就恶补一下. arguments:用在函数 ...

  3. jquery评分插件jquery.raty.js

    1.参考链接 官方地址. 教程一 教程二 2.案例1 引入文件: <!-- 评分插件 --> <script type="text/javascript" src ...

  4. 运维shell全部语法进阶

    Linux运维之shell脚本进阶篇 一.if语句的使用 1)语法规则 1 2 3 4 5 6 7 8 9 if [条件]     then         指令 fi 或 if [条件];then ...

  5. Springboot 定时任务,service层无法注入问题详细解决

    开发一个微信小程序后台,建立websocket 长连接,需要后台开启定时任务, 定时任务定时查库,相应前台 但是具体执行过程中一直在报空指针错误,最后定位到service 为空,无法调用其相关的方法导 ...

  6. Cookie Manager

    https://github.com/Rob--W/cookie-manager 修改饼干获取VIP标识

  7. 团队合作one

    一.项目介绍 为生活在长大的学生提供方快捷的生活服务,通过帖子发现自己志同道合的朋友,记录自己在长大点滴.本项目的意义在于锻炼团队的scrum能力,加强团队合作能力.确定本项目采用的技术方向:本项目整 ...

  8. svn linux 服务器的搭建

    1 查询是否安装了svn: rpm -qa subversion 2:如果没有那么: yum -y install  subversion 3:建立一个存储路经:mkdir -p /applicati ...

  9. xdoj-1297 Tr0y And His Startup

    题目: 1297: Tr0y And His Startup 时间限制: 1 Sec  内存限制: 256 MB提交: 18  解决: 8[提交][状态][讨论版] 题目描述 Tr0y创办了一家安全公 ...

  10. MySQL_优化

    MySQL优化(http://www.cnblogs.com/zengkefu/p/5683438.html) 1.explain+索引. 在你要查询的语句前加explain,看下有没有用到索引,如果 ...