Django2.2 数据库的模块model学习笔记
一、前言
为什么选用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)
三、模型自定义管理器(模型的显隐性)
这里先说一下,以下面这个数据表为例,当某条数据需要做删除处理时 ---------------------------(,最好对重要数据做逻辑删除,不做物理删除,)
这里有两种操作方式:
- 通过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学习笔记的更多相关文章
- 【精选】Nginx模块Lua-Nginx-Module学习笔记(一)Nginx Lua API 接口详解
源码地址:https://github.com/Tinywan/Lua-Nginx-Redis 一.介绍 各种* _by_lua,* _by_lua_block和* _by_lua_file配置指令用 ...
- Acitiviti数据库表设计(学习笔记)
ACT_ID_*:与权限,用户与用户组,以及用户与用户组关系相关的表 ACT_RU_*:代表了流程引擎运行时的库表,RU表示Runtime ACT_HI_*:HI表示History当流程完成了节点以后 ...
- Nginx模块Lua-Nginx-Module学习笔记(一)Nginx Lua API 接口详解
源码地址:https://github.com/Tinywan/Lua-Nginx-Redis 一.介绍 各种* _by_lua,* _by_lua_block和* _by_lua_file配置指令用 ...
- uplift model学习笔记
一.解决的问题: 通常的 Propensity Model 和 Response Model 只是给目标用户打了个分,并没有确保模型的结果可以使得活动的提升最大化:它没有告诉市场营销人员,哪个用户最有 ...
- Orchard 模块开发学习笔记 (1)
创建模块 首先,打开Bin目录下的Orchard.exe 等到出现orchard>后, 看看命令列表中是否存在 codegen module 如果不存在,则需要先执行:feature enabl ...
- mysql之数据库基本概念(mysql学习笔记一)
数据库系统 数据库管理系统(DBMS)+数据库(DATABASE)(+数据库管理员) DBS=dbms+db 定义: 大量信息进行管理的高效解决方案,按照数据结构来组织.存储和管理数据的仓库 关系 ...
- 【官方文档】Nginx模块Nginx-Rtmp-Module学习笔记(三)流式播放Live HLS视频
源码地址:https://github.com/Tinywan/PHP_Experience HTTP Live Streaming(HLS)是由Apple Inc.实施的非常强大的流视频协议.HLS ...
- 【精选】Nginx模块Lua-Nginx-Module学习笔记(二)Lua指令详解(Directives)
源码地址:https://github.com/Tinywan/Lua-Nginx-Redis Nginx与Lua编写脚本的基本构建块是指令. 指令用于指定何时运行用户Lua代码以及如何使用结果. 下 ...
- 【官方文档】Nginx模块Nginx-Rtmp-Module学习笔记(二)HLS 指令详解
源码地址:https://github.com/Tinywan/PHP_Experience 一.在Nginx配置文件的RTMP模块中配置hls hls_key_path /tmp/hlskeys; ...
随机推荐
- 排列组合C、A
排列组合是组合学最基本的概念.所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序.组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序. 排列组合定义及公式 排列的定义:从n个不同 ...
- BZOJ 4152: [AMPPZ2014]The Captain Dijkstra+贪心
Code: #include <queue> #include <cstdio> #include <cstring> #include <algorithm ...
- Codevs 1574 广义斐波那契数列(矩阵乘法)
1574 广义斐波那契数列 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 广义的斐波那契数列是指形如an=p*an-1+q* ...
- 北京清北 综合强化班 Day1
a [问题描述]你是能看到第一题的 friends呢. —— hja何大爷对字符串十分有 ...
- JavaScript设计模式—适配器模式
适配器模式介绍 旧接口格式和使用者不兼容,中间加一个适配器转换接口 在生活中,我们有许多的适配器,例如iPhone7以后的耳机接口从3.5mm圆孔接口更改成为了苹果专属的 lightning接口.许多 ...
- 2018-2019-2 20165330《网络对抗技术》Exp9 Web安全基础
目录 基础问题 实验目的 实验内容 实验步骤 实验总结与体会 实验目的 本实践的目标理解常用网络攻击技术的基本原理. 返回目录 实验内容 WebGoat准备工作 SQL注入攻击 命令注入(Comman ...
- iOS中web app调试(mac)
原文 iOS中web app调试(mac).md 目录 一.真机联调配置 二.mac上Safari配置及真机联调 三.iOS模拟器使用 四.在iOS模拟器中安装app 近期公司vue项目开发,目的是一 ...
- ansiblle---roles
使用ansible中的roles来管理主机. 剧本中的roles你现在已经学过 tasks 和 handlers,那怎样组织 playbook 才是最好的方式呢?简单的回答就是:使用 roles ! ...
- Mac下idea启动H5报错:xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Deve
1. 执行“ xcodebuild -showsdks ”,报错如下“xcode-select: error: tool 'xcodebuild' requires Xcode, but active ...
- docker安装和基本命令
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口. ...