模型学习记录篇,仅仅自己学习时做的记录!!!

实现模型变更的三个步骤:

  • 修改你的模型(在models.py文件中)。
  • 运行python manage.py makemigrations ,为这些修改创建迁移文件
  • 运行python manage.py migrate ,将这些改变更新到数据库中。

模型字段类型:

  1. AutoField自增字段   一个IntegerField 根据实际ID自动增长.
  2. BigIntegerField   一个64位整数, 这个字段默认的表单组件是一个TextInput.
  3. BinaryField     一个用来存储原始二进制码的Field.
  4. BooleanField
  5. CharField  class CharField(max_length=None[, **options]), 存储从小到很大各种长度的字符串的地方, 默认的表单样式是 TextInput.
  6. CommaSeparatedIntegerField  一个逗号分隔的整数字段。
  7. DateField   一个使用Python的datetime.date实例表示的日期.
  8. DateTimeField   通过Pythondatetime.datetime实例表示的日期和时间.
  9. DecimalField   十进制浮点数,表示python中 Decimal 的一个实例.
  10. DurationField   用作存储一段时间的字段类型 - When used on PostgreSQL, the data type used is an interval
  11. EmailField  that the value is a valid email address
  12. FileField  一个上传文件的字段

a)    FileField and FieldFile

  1. FilePathField   一个 CharField ,内容只限于文件系统内特定目录下的文件名。
  2. FloatField   通过一个浮动实例表示Python中的浮点数。
  3. ImageField
  4. IntegerField   一个整数。从 -21474836482147483647 范围内的值是合法的。默认的表单输入工具是TextInput.
  5. IPAddressField
  6. GenericIPAddressField
  7. NullBooleanField
  8. PositiveIntegerField  跟IntegerField一样,但必须是大于等于0,从0到147483647 范围内的值是合法的。
  9. PositiveSmallIntegerField   跟PositiveIntegerField一样,但只只允许在0到32767范围内
  10. SlugField
  11. SmallIntegerField  跟IntegerField一样,范围从-32768到32767范围内是合法的
  12. TextField   大的文本字段,默认表单是Textarea.
  13. TimeField   时间字段,类似于DateField和DateTimeField
  14. URLField
  15. UUIDField

模型执行查询

:模型执行查询语句写在view中函数中

基础:

  • 每个模型都是django.db.models.Model 的一个Python 子类。
  • 模型的每个属性都表示数据库中的一个字段。
  • Django 提供一套自动生成的用于数据库访问的API;详见执行查询。

通过模型中的管理器构造一个查询集,来从你的数据库中获取对象。

从SQL 的角度,查询集SELECT 语句等价,过滤器是像WHERELIMIT 一样的限制子句。你可以从模型的管理器那里取得查询集。每个模型都至少有一个管理器,它默认命名为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,此为模型部分第一次学习记录后续继续完善

转载于:https://www.cnblogs.com/CQ-LQJ/p/5103559.html

[Django]模型学习记录篇--基础相关推荐

  1. JNI学习开始篇 基础知识 数据映射及学习资料收集

    JNI学习开始篇 基础知识 数据映射及学习资料收集 JNI介绍 JNI(Java Native Interface) ,Java本地接口. 用Java去调用其他语言编写的程序,比如C或C++. JNI ...

  2. 空间计量模型学习记录

    空间计量模型学习记录 空间计量模型模型分类 OSL模型 空间滞后模型 空间误差模型 自变量空间滞后模型 空间杜宾模型 空间杜宾误差模型 操作方式参考 参考文章 空间自回归模型-OLS.SLM.SEM理 ...

  3. Matlab——学习记录篇1番外篇——hold on与hold off的区别

    重点重点!!!!!!!本人使用的Matlab版本是R2021b,如果下面代码在别的版本运行之后有bug显示的话,需要自己到百度寻找相应的函数把错误的地方替换 继上一篇学习记录篇1,编程的时候一直对ho ...

  4. Django框架学习记录(3)

    简介:本章主要介绍基于Django模型使用数据库 一.配置数据库信息 以MySQL为例,需要在setting.py文件中找到DATABASES DATABASES = {'default': {'EN ...

  5. 小白学习记录篇01---C语言和C++的区别以及C语言中文件的含义(不足之处欢迎大佬补充提醒。)

    1.C语言和C++的对比 (1)创建文件的后缀名不同,如果创建C语言的文件通常以.c结尾,而C++通常以.cpp结尾. <1>这里就想要补充两个文件的概念,什么是.c文件?什么是.cpp文 ...

  6. 超详细的Git学习记录(Git基础内容/IDEA集成Git/GitHub/Gitee/GitLab及Centos7部署GitLab)

    超详细的Git学习笔记 从B站搜到的尚硅谷视频学习了Git,记录了一下学习的内容,收获很大 学习地址: https://www.bilibili.com/video/BV1vy4y1s7k6?p=11 ...

  7. 从零手写移动机器人URDF模型学习记录(一)

    目录 前言 一.创建工作空间 1.新建工作空间文件夹moveit_ws 2.对工作空间moveit_ws进行编译 3.设置环境变量 二.创建机器人建模的功能包 三.创建URDF模型 1.添加robot ...

  8. (四)javaweb 学习--javascript篇基础

    文章目录 javascript (数据类型,方法) javascrip使用 javascrip使用进阶 HTML代码 CSS代码 javascript代码 javascrip使用进阶2 HTML代码 ...

  9. linux父设备,linux 设备模型---学习记录(二)

    通过bus_register()函数可以弄清楚整个设备模型的骨架.大致的架构弄清楚之后就可以继续填充这个模型了.根据总线.设备.驱动由高层到底层的顺序,可以以设备为入口点来继续探索. 设备的入口在de ...

最新文章

  1. 提高显微镜分辨率方法_超分辨显微镜研究获进展
  2. python之turtle库(画图)
  3. 战龙四驱java_《战龙四驱》中都有哪些经典角色
  4. springboot使用HttpSessionListener监听器统计在线用户数
  5. 怎样允许远程访问mysql_如何开启MySQL远程访问权限 允许远程连接
  6. 树控件,多条件组合查询与混合数据源
  7. 数据结构链表之单链表的快慢指针——3
  8. XML文件的写入和读取(解析)基于DOM4J工具
  9. 16查看走线长度_糟糕!丝印放到表层走线上面啦
  10. c++编程时为什么老是出现cout未定义
  11. [活动]问卷调查:打造更好用的Visual Studio 2008
  12. PoEdu - C++阶段班【Po学校】- 第1课
  13. 不能忽视的情绪 -- 喜怒哀惧,也不过度关注
  14. Win10家庭版禁用系统更新方法汇总及问题解决
  15. 服务器 '' 上的 MSDTC 不可用。
  16. 模拟CMOS集成电路学习笔记——MOS器件物理基础
  17. 课程设计matlab仿真,MATLAB与仿真系统课程设计报告
  18. python_open函数中newline参数详解
  19. 鼠标移入显示图片案例
  20. 2018-08博客撰写计划

热门文章

  1. listview移动时 item背景颜色错位问题
  2. 关于LB论坛的一个BUG的探讨
  3. 学术部活动具体落实计划
  4. How to run a estimaton
  5. 文科生的数据分析:亲测有效,真香!!!
  6. 纪念一下我画的第一个印刷电路板!
  7. 没有理论支持的文章令人窒息
  8. C++学习札记(2011-09-30)
  9. 解决nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误
  10. Excel中的VBA宏:每次划款前从总名册中同步用户数据到当前页