[Django]模型学习记录篇--基础
模型学习记录篇,仅仅自己学习时做的记录!!!
实现模型变更的三个步骤:
- 修改你的模型(在models.py文件中)。
- 运行python manage.py makemigrations ,为这些修改创建迁移文件
- 运行python manage.py migrate ,将这些改变更新到数据库中。
模型字段类型:
- AutoField自增字段 一个IntegerField 根据实际ID自动增长.
- BigIntegerField 一个64位整数, 这个字段默认的表单组件是一个TextInput.
- BinaryField 一个用来存储原始二进制码的Field.
- BooleanField
- CharField class CharField(max_length=None[, **options]), 存储从小到很大各种长度的字符串的地方, 默认的表单样式是 TextInput.
- CommaSeparatedIntegerField 一个逗号分隔的整数字段。
- DateField 一个使用Python的datetime.date实例表示的日期.
- DateTimeField 通过Pythondatetime.datetime实例表示的日期和时间.
- DecimalField 十进制浮点数,表示python中 Decimal 的一个实例.
- DurationField 用作存储一段时间的字段类型 - When used on PostgreSQL, the data type used is an interval
- EmailField that the value is a valid email address
- FileField 一个上传文件的字段
- FilePathField 一个 CharField ,内容只限于文件系统内特定目录下的文件名。
- FloatField 通过一个浮动实例表示Python中的浮点数。
- ImageField
- IntegerField 一个整数。从 -2147483648 到 2147483647 范围内的值是合法的。默认的表单输入工具是TextInput.
- IPAddressField
- GenericIPAddressField
- NullBooleanField
- PositiveIntegerField 跟IntegerField一样,但必须是大于等于0,从0到147483647 范围内的值是合法的。
- PositiveSmallIntegerField 跟PositiveIntegerField一样,但只只允许在0到32767范围内
- SlugField
- SmallIntegerField 跟IntegerField一样,范围从-32768到32767范围内是合法的
- TextField 大的文本字段,默认表单是Textarea.
- TimeField 时间字段,类似于DateField和DateTimeField
- URLField
- UUIDField
模型执行查询
注:模型执行查询语句写在view中函数中
基础:
- 每个模型都是django.db.models.Model 的一个Python 子类。
- 模型的每个属性都表示数据库中的一个字段。
- Django 提供一套自动生成的用于数据库访问的API;详见执行查询。
通过模型中的管理器构造一个查询集,来从你的数据库中获取对象。
从SQL 的角度,查询集和SELECT 语句等价,过滤器是像WHERE 和LIMIT 一样的限制子句。你可以从模型的管理器那里取得查询集。每个模型都至少有一个管理器,它默认命名为objects。通过模型类来直接访问它,
一般查询集(相当于select * from LOrder):
LOrder.objects #模型管理器, 通过模型中的管理器构造一个查询集,来从你的数据库中获取对象.
注: 可以在每个模型类中重命名它们。在模型中定义一个值为models.Manager()的属性,来重命名管理器。
LOrder.objects.all() #获取一个表中所有对象,这是最简单的方式
过滤查询集 (相当于select * from LOrder where +条件语句):
LOrder.objects.filter(查询参数) #获取一个表中满足查询参数的对象,
例: LOrder.objects.filter(serv_id='121768152983'),意为查询LOrder数据标识serv_id字段下为121768152983的一行信息
LOrder.objects.exclude(查询参数) #获取一个表中不满足查询参数的对象,执行与filter相反的结果
注:了解上面两种模型执行查询方法后,可以试着链式查询方式
LOrder.objects.get(查询参数) #获取一个表中满足查询参数的单一对象,
值得注意的是,使用get() 和使用filter() 的切片[0] 有一点区别。如果没有结果满足查询,get() 将引发一个DoesNotExist 异常。这个异常是正在查询的模型类的一个属性 —— 所以在上面的代码中,如果没有主键为1 的Entry 对象,Django 将引发一个Entry.DoesNotExist。
类似地,如果有多条记录满足get() 的查询条件,Django 也将报错。这种情况将引发MultipleObjectsReturned,它同样是模型类自身的一个属性。
限制查询集(相当于select * from LOrder limit 10):
LOrder.objects.all()[1:10:2] #获取一个表中1到10行且每隔2行的对象
字段查询集:
LOrder.objects.filter(completed_time__lte='2015-12-01') #筛选出字段completed_time__lte小于2015-12-01的数据
LOrder.objects.filter(completed_time__gte='2015-12-01') #筛选出字段completed_time__lte大于2015-12-01的数据
注: exclude中lte是大于,gte是小于
LOrder.objects.filter(completed_time__exact='2014-11-21 17:29:21') #exact是精确匹配
LOrder.objects.filter(completed_time__contains ='2015') # contains是模糊匹配,相当于like’%2015%’
注:iexact,和icontains是不区分大小写,上面的区分大小写
注1: 一般来说,只有在“请求”查询集的结果时才会到数据库中去获取它们。
注2: 执行查询函数具体参见django1.8.2官方文档中的查询集API参考。
最后编辑于2016-01-05,此为模型部分第一次学习记录后续继续完善
[Django]模型学习记录篇--基础的更多相关文章
- 学习记录-java基础部分(一)
学习记录-java基础部分(一) 参考:GitHub上的知名项目:javaGuide : https://github.com/Snailclimb/JavaGuide/blob/master/doc ...
- python核心编程学习记录之基础知识
虽然对python的基础知识有所了解,但是为了更深入的学习,要对python的各种经典书籍进行学习 第一章介绍python的优缺点,略过 第二章介绍python起步,第三章介绍python基础,仅记录 ...
- python学习记录_IPython基础,Tab自动完成,内省,%run命令_
这是我第一次写博客,之前也有很多想法,想把自己所接触的,以文本的形式储存,总是没有及时行动.此次下定决心,想把自己所学,所遇到的问题做个记录共享给诸位,与此同时自己作为备忘,感谢各位访问我的博 ...
- CSS盒子模型学习记录3(侧面导航栏)
学习http://www.blueidea.com/tech/web/2007/4545_2.asp 代码试验 html <!DOCTYPE html PUBLIC "-//W3C// ...
- CSS盒子模型学习记录1
http://www.blueidea.com/tech/web/2007/4545.asp 代码试验: html代码: <!DOCTYPE html PUBLIC "-//W3C// ...
- CSS盒子模型学习记录2
参考:http://www.blueidea.com/tech/web/2007/4545_2.asp 代码试验: html代码: <!DOCTYPE html PUBLIC "-// ...
- SpringBoot【新手学习记录篇】
1. 启动方式: 在idea中的application.java右键run as 命令行进入项目目录,使用命令 mvn spring-boot:run 使用mvn install进行打包,然后进入ta ...
- 个人学习记录-Cpp基础-成员初始化列表
Translator Translator 参考链接: https://blog.csdn.net/XIONGXING_xx/article/details/115553291http ...
- 《java从入门到精通》学习记录
目录 <Java从入门到精通>学习记录 3 基础的基础部分: 3 一. 常量与变量 3 1. 掌握: 3 (1) .常量与变量的声明方式: 3 (2) .变量的命名规则: 3 (3) .变 ...
随机推荐
- listview控件及其与数据库的连接
一.显示数据 1.视图 -----小三角--视图-Details,该选项最常用,选中之后会以表格样式呈现. 2.设置列头 ----右键--编辑列 --添加 先编辑列,再编辑项 编辑列右边的属性:Tex ...
- C#入门经典Lambda
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Lamb ...
- 一个简单的WPF字体选择器实现
很久没有写博客了. 这是放暑假中的第一篇博客,以后会多多更新!!! 这就是我写的一个字体选择器,界面如下: 本程序用到的技术比较简单,仅仅是用了Font类的几个方法和数据绑定而已. 首先建一个四行两列 ...
- [WCF编程]10.操作:事件
一.事件概述 基础的WCF回调机制并不能阐明客户端与服务之间交互的本质.双向回调的规范使用可以通过事件来完成.客户端发生的相关事项都可以通过事件通知客户端或者多个客户端.事件可能源于直接的客户端调用, ...
- C#动态编译
C#提供了DynamicObject和IDynamicMetaObjectProvider两种方式实现动态类型,动态类型的好处是类型的公有接口可以在运行时改变. 创建动态类型最简单的方法就是继承Dyn ...
- 基于.net mvc 的供应链管理系统(YB-SCM)开发随笔
作为园子里的伪新人,经常拜读众位大牛的帖子,一直有写点东西的想法. 今天终于下定决心去写这个系统的开发过程,由于本人文笔有限,不足之处多多海涵.
- CSS侧边栏,ng-click定义选中事件
本篇小随笔,记录下侧边栏的写法和ng-click点击选中事件.因为这个工程不让引用jQuery.所以ng-click选中事件用了一个比较笨的方法实现的. 下面是HTML页面 按 Ctrl+C 复制代码 ...
- 从零开始学 Java - Spring 使用 Quartz 任务调度定时器
生活的味道 睁开眼看一看窗外的阳光,伸一个懒腰,拿起放在床一旁的水白开水,甜甜的味道,晃着尾巴东张西望的猫猫,在窗台上舞蹈.你向生活微笑,生活也向你微笑. 请你不要询问我的未来,这有些可笑.你问我你是 ...
- 使用CruiseControl.Net全面实现持续集成
持续集成想必大家很多人都听说过,甚至都实践过,最近我又一次亲历了一次持续集成,现将我的经验分享给大家.关于持续集成的理论在本文概不涉及,本文的主要目的是实战CruiseControl.Net,用它来全 ...
- 关于WEB 性能优化 (摘抄)
压缩源代码和图片 JavaScript文件源代码可以采用混淆压缩的方式,CSS文件源代码进行普通压缩,JPG图片可以根据具体质量来压缩为50%到70%,PNG可以使用一些开源压缩软件来压缩,比如24色 ...