一、前言

  为什么选用Django2.2,因为从2019年下半年起Django2.2逐渐成为长期支持版本,官网也有数据,所以当然选用维护时间长的版本

二、models的建立

  Django的models也就是你所配置的数据库的表名(Django2.2--mysql连接---https://www.cnblogs.com/cybg/p/11906652.html)

 要注意的是每次的class model建立都需要在控制台执行一次迁移文件----python manage.py migrate

2.1 objects.filter()与objects.get()的区别

  .相同点:两者均是从数据表中查询满足条件的数据,----并且两者获取的数据类型均为 Queryset

  .不同点:get()获取到的是一条数据----因此往往需要添加try语句来防止没有数据等情况

       filter()获取到的是多条数据----使用更方便----配合F和操作可以方便的在views层来用for 迭代显示数据

2.2 F与Q运算

  .F运算

  • 可以获取我们属性的值
  • 可以实现一个模型的不同属性的运算操作
  • 还可以支持算数运算

  .Q运算

  • 可以对条件进行封装
  • 封装之后,可以支持逻辑运算

    。与、或、非(&、|、~)

 # companies=Company.objects.filter(c_boys_num__lt=F('c_girls_num')-10)
# companies=Company.objects.filter(c_boys_num__gt=1).filter(c_girls_num__gt=5)#可用下面的替代
companies=Company.objects.filter(Q(c_boys_num__gt=1) & Q(c_girls_num__gt=15))#与运算用 & 或运算用 | 表示
for company in companies:
print(company.c_name)

三、模型自定义管理器(模型的显隐性)

  这里先说一下,以下面这个数据表为例,当某条数据需要做删除处理时   ---------------------------(,最好对重要数据做逻辑删除,不做物理删除,)

这里有两种操作方式:

  1. 通过F运算或则filter()来判断这条数据属性的布尔值-----------物理性删除------------在views层显示

    

#物理性删除
# animals=Animal.a_m.filter(is_delete=False)
animals=Animal.objects.all()

    2.通过模型自定义管理器(查数据非常方便)------不通过系统管理器objects-----------自定义管理器,重写all()系统函数来达到逻辑性删除数据

    

class AnimalManager(models.Manager):
def get_queryset(self):
return super(AnimalManager,self).get_queryset().filter(is_delete=False)class Animal(models.Model):
a_name=models.CharField(max_length=16)
is_delete=models.BooleanField(default=False) # 模型自定义管理器
objects=AnimalManager() -------------------------------------------------
# 模型自定义管理器(模型的显隐性)
# animals=Animal.a_m.all()

  

----------这里仅更新了模板的三类查询注意点,并不全----------但数据查询这些基本够用了----------------至于删除,更新---------其实都是基于查询

    下期更新Django2.2模板的各种套用显示------------数据均为Mysql数据库动态数据------------不足的还望指正

   

Django2.2 数据库的模块model学习笔记的更多相关文章

  1. 【精选】Nginx模块Lua-Nginx-Module学习笔记(一)Nginx Lua API 接口详解

    源码地址:https://github.com/Tinywan/Lua-Nginx-Redis 一.介绍 各种* _by_lua,* _by_lua_block和* _by_lua_file配置指令用 ...

  2. Acitiviti数据库表设计(学习笔记)

    ACT_ID_*:与权限,用户与用户组,以及用户与用户组关系相关的表 ACT_RU_*:代表了流程引擎运行时的库表,RU表示Runtime ACT_HI_*:HI表示History当流程完成了节点以后 ...

  3. Nginx模块Lua-Nginx-Module学习笔记(一)Nginx Lua API 接口详解

    源码地址:https://github.com/Tinywan/Lua-Nginx-Redis 一.介绍 各种* _by_lua,* _by_lua_block和* _by_lua_file配置指令用 ...

  4. uplift model学习笔记

    一.解决的问题: 通常的 Propensity Model 和 Response Model 只是给目标用户打了个分,并没有确保模型的结果可以使得活动的提升最大化:它没有告诉市场营销人员,哪个用户最有 ...

  5. Orchard 模块开发学习笔记 (1)

    创建模块 首先,打开Bin目录下的Orchard.exe 等到出现orchard>后, 看看命令列表中是否存在 codegen module 如果不存在,则需要先执行:feature enabl ...

  6. mysql之数据库基本概念(mysql学习笔记一)

    数据库系统   数据库管理系统(DBMS)+数据库(DATABASE)(+数据库管理员) DBS=dbms+db 定义: 大量信息进行管理的高效解决方案,按照数据结构来组织.存储和管理数据的仓库 关系 ...

  7. 【官方文档】Nginx模块Nginx-Rtmp-Module学习笔记(三)流式播放Live HLS视频

    源码地址:https://github.com/Tinywan/PHP_Experience HTTP Live Streaming(HLS)是由Apple Inc.实施的非常强大的流视频协议.HLS ...

  8. 【精选】Nginx模块Lua-Nginx-Module学习笔记(二)Lua指令详解(Directives)

    源码地址:https://github.com/Tinywan/Lua-Nginx-Redis Nginx与Lua编写脚本的基本构建块是指令. 指令用于指定何时运行用户Lua代码以及如何使用结果. 下 ...

  9. 【官方文档】Nginx模块Nginx-Rtmp-Module学习笔记(二)HLS 指令详解

    源码地址:https://github.com/Tinywan/PHP_Experience 一.在Nginx配置文件的RTMP模块中配置hls hls_key_path /tmp/hlskeys; ...

随机推荐

  1. Ubuntu操作及Linux基础知识

    part 1: Ubuntu操作基础 1.调整字体的大小 调大:crtl+shift+“+”  调小:crtl+“-” 2.不要把虚拟机全屏的时候截屏,要不然会认为是Linux系统截屏而非Window ...

  2. BOOTING ELOQUENT MODEL TRAITS

    BOOTING ELOQUENT MODEL TRAITS So I've learnt a little Laravel/Eloquent trick today that is very much ...

  3. 怎么把word文档粘贴到编辑器里啊?

    很多时候我们用一些管理系统的时候,发布新闻.公告等文字类信息时,希望能很快的将word里面的内容直接粘贴到富文本编辑器里面,然后发布出来.减少排版复杂的工作量. 下面是借用百度doc 来快速实现这个w ...

  4. Codeforces 808 E. Selling Souvenirs(三分)

    E. Selling Souvenirs 题意: n件物品,有重量和价值,重量只有三种1,2,3.问取不超过m重量的物品的价值总和最大是多少.(n<=1e5,w<=3e5) 思路: n*w ...

  5. HDU 5974 A Simple Math Problem ——(数论,大连区域赛)

    给大一的排位赛中数论的一题.好吧不会做...提供一个题解吧:http://blog.csdn.net/aozil_yang/article/details/53538854. 又学了一个新的公式..如 ...

  6. Nginx访问非常慢

    由于域名绑定服务器IP,而服务器上部署了多个应用,想都通过域名访问,故弄了个Nginx转发. 加了Nginx以后,服务访问明显卡顿. 查看配置: location / { proxy_pass htt ...

  7. 5.使用Ribbon实现客户端侧负载均衡

                                Ribbon实现客户端侧负载均衡 5.1. Ribbon简介 Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法 ...

  8. Windows Server 2012R2 部署 Domain Controller

    1. Create a machine as Domain Controller; 2. Change DNS server address as 127.0.0.1; 3. Change Compu ...

  9. Qt学习之如何启动和终止一个线程

    先来给出每个文件的相关代码然后再加以分析 //*************dialog.h**************// #ifndef DIALOG_H #define DIALOG_H #incl ...

  10. sql 查询存在一个表而不在另一个表中的数据

    方法一(效率底) select A.* from 办卡 A where A.namedh not in (select namedh from 银行) 方法二(效率中) select A.* from ...