django模型创建
- 定义模型
- 模型,属性,表,字段之间的关系
- 一个模型类在数据库中对应一张表,在模型类中定义的属性,对应该模型对照表中的一个字段
- 定义属性:见下文
- 创建模型类
- 元选项
- 在模型类中定义Meta类,用于设置元信息
- 示例:
- class Meta:
- db_table = "students"
- ordering = ['id']
- db_table
- 定义数据表名,推荐用小写字母,数据表名默认为项目名小写_类名小写
- ordering
- 对象的默认排序字段,获取对象的列表时使用
- 示例:
- ordering['id'] id按升序排列
- ordering['-id'] id按降序排列
- 注意:排序会增加数据库开销
- 模型成员
- 类属性
- 隐藏类属性objects:
- 是Manager类型的一个对象,作用是与数据库进行交互
- 当定义模型类时没有指定管理器,则Django为模型创建一个名为objects的管理器
- 自定义管理器示例:
- 定义stuObj管理器:
- stuObj = models.Manager()
- 当为模型指定模型管理器,Django就不再为模型类生成objects模型管理器了。
- 自定义管理器Manager类
- 模型管理器是Django的模型进行与数据库交互的窗口,一个模型可以有多个模型管理器
- 作用:
- 向管理器类中添加额外的方法
- 修改管理器返回的原始查询集
- 通常会重写get_queryset()方法
- 代码示例:
- class StudentsManager(models.Manager):
- def get_queryset(self):
- return super(StudentsManger, self).get_queryset().filter(isDelete=False)
- class Students(model.Moder):
- # 自定义模型管理器
- # 当自定义模型管理器,objects就不存在了
- stuObj = models.Manger()
- stuObj2 = StudentsManager()
- 创建对象
- 目的:向数据库中添加数据
- 当创建对象时,django不会对数据库进行读写操作,当调用save()方法时才与数据库交互,将对象保存在数据库表中。
- 注意:
- __init__方法已经在父类models.Model中使用,在自定义的模型中无法使用。
- 方法:
- 在模型类中增加一个类方法,示例如下:
- class Students(model.Moder):
- ...snip...
- @classmethod
- def createStudent(cls, name, age, gender, contend,
- grade,lastT, createT, isD=False):
- stu = cls(sname=name, sage=age, sgender=gender,
- scontend=contend, sgrade=grade, lastTime=lastT, createTime=createT,
- isDelete=isD)
- return stu
- 在自定义管理器中添加一个方法,示例如下:
- class StudentsManager(models.Manager):
- def get_queryset(self):
- return super(StudentsManager, self).get_queryset().filter(isDelete=False)
- def createStudent(self, name, age, gender, contend, grade, lastT, createT, isD=False):
- stu = self.model()
- # print(type(grade))
- stu.sname = name
- stu.sage = age
- stu.sgender = gender
- stu.scontend = contend
- stu.sgrade = grade
- stu.lastTime = lastT
- stu.createTime = createT
- return stu
django模型创建的更多相关文章
- Django学习(三) Django模型创建以及操作
在Django中可以建立自己的模型Model,这里对应Java里的实体类,跟数据库表是对应的.其中用到了django.db模块中的models.如下图所示: mysite/news/models.py ...
- {django模型层(二)多表操作}一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询、分组查询、F查询和Q查询
Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 xxx 七 ...
- Django 06 Django模型基础1(ORM简介、数据库连接配置、模型的创建与映射、数据的增删改查)
Django 06 Django模型基础1(ORM简介.数据库连接配置.模型的创建与映射.数据的增删改查) 一.ORM系统 #django模型映射关系 #模型类-----数据表 #类属性-----表字 ...
- Django day08 多表操作 (一) 多表模型创建
多表模型创建分析:1)作者表:一个作者有姓名和年龄2)作者信息表: 有作者就有信息,点击作者的名字可以查询他的电话和地址, 作者表对应作者信息表,所以他们之间是一对一对的关系3)出版社表: 出版社有对 ...
- Django模型类Meta元数据详解
转自:https://my.oschina.net/liuyuantao/blog/751337 简介 使用内部的class Meta 定义模型的元数据,例如: from django.db impo ...
- Django模型层Meta内部类详解
Django 模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性.以下对此作一总结: abstract 这个属性是定义当前的模型类是不是一个抽象类.所谓抽象类是不会对应 ...
- django模型
用django时,只要用到数据库就得用到模型. 一.数据库的MTV开发模式 从MVC到MTV 所谓软件架构的MVC模式将数据的存取逻辑(Module),表现逻辑(View)和业务逻辑(Controll ...
- django模型中的抽象类(abstract)
首先介绍下django的模型有哪些属性:先看例子: Django 模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性.以下对此作一总结: abstract 这个属性是定义当前的模 ...
- Django模型之Meta选项详解
Django模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性.而可用的选项大致包含以下几类 abstract 这个属性是定义当前的模型是不是一个抽象类.所谓抽象类是不会对应数据 ...
随机推荐
- linux达人养成计划学习笔记(五)—— 关机和重启命令
一.shutdown 1.格式: shutdown [选项] 时间(now) 选项: -c: 取消前一个关机命令 -h: 关机 -r: 重启 2.程序放入后台执行: shutdown -r 时间 &a ...
- HDU 2492 Ping pong (数状数组)
Ping pong Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- GitHub Desktop 代码库管理工具
1.GitHub Desktop 简介 GitHub Desktop 是用于 GitHub 项目版本控制软件. 官网下载地址 GitHub Desktop 其它下载地址 GitHub Desktop ...
- UAT测试后上线出现问题的引起的思考
最近公司有一个外部项目上线了,虽然我没有参与这个项目,仅仅只是作为一个旁观者,但是关于用户的UAT测试的问题,不得表达下我的看法, 在上线之前进行了近一个月的UAT测试,测试完成后进入了正式上线阶段. ...
- [.NET] 使用VALIDATIONCONTEXT快速进行模型资料的验证 》简单xml创建-json转xml
[.NET] 使用VALIDATIONCONTEXT快速进行模型资料的验证 在进行WebAPI功能开发的时候,一般传统的验证资料是否合法的方式,都是透过if/else的方式进行判断若是使用Valida ...
- JsonPath小结
在查看DHC Assertions 模块说明的时候,无意间发现assert模块中JsonBody使用了 JSON Path ,兴趣使然,看了下,发现是类似解析xml用到的 XPath.通过路径来获取j ...
- explicit_defaults_for_timestamp参数
Introduced 5.6.6 Deprecated 5.6.6 Command-Line Format --explicit_defaults_for_timestamp=# System Var ...
- docker 和 vagrant 作为程序发布 和 开发的独立而统一的运行环境
docker 和 vagrant 作为程序发布 和 开发的运行环境,可以提供打包程序,并使得程序运行在一个独立的虚拟环境中,避免程序发布到客户机之后,环境不一致导致的诸多问题. refer: ...
- HMM条件下的 前向算法 和 维特比解码
一.隐马尔科夫HMM如果: 有且仅仅有3种天气:0晴天.1阴天.2雨天 各种天气间的隔天转化概率mp: mp[3][3] 晴天 阴天 雨天 晴天 0.33333 0.33333 0.33333 阴天 ...
- 摘抄JPA官方文档原文 防呆
Spring Data JPA - Reference Documentation Oliver GierkeThomas DarimontChristoph StroblMark PaluchVer ...