django orm模块中的 is_delete用法


Posted in Python onMay 20, 2020

数据库删除数据咱都知道,简单的说就是当一条数据对企业没用后,一般人可能会选择删除这条数据。

但是删除后,万一以后又突然有用呢。所以我们这时候会选择在写orm模块的时候,加入is_delete字段

is_delete = models.BooleanField(default=False,verbose_name='是否删除')

这样以后咱如果要删除一条数据了,就设置一下

is_delete=1

就表示这条数据在逻辑上删除了,简单的说就是你再怎么搜数据库也搜不到了,如果以后还用,就再设置

is_delete=0

就可以了!

补充知识:django中当model设置了ordering后,使用distinct()和annotate()问题记录

model类如下,我在class Meta中设置了ordering = ['-date_create'],即模型对象返回的记录结果集是按照这个字段排序的。

class SystemUserPushHistory(models.Model):
 
  id = models.UUIDField(default=uuid.uuid4, primary_key=True)
  host_name = models.CharField(max_length=128, null=False)
  system_username = models.CharField(max_length=128, null=False)
  method = models.CharField(max_length=32, null=False)
  is_success = models.BooleanField(default=False)
  date_create = models.DateTimeField(auto_now_add=True, editable=False)
  message = models.CharField(max_length=4096, null=True)
 
  class Meta:
    db_table = "assets_systemuser_push_history"
    ordering = ['-date_create']
 
  def __str__(self):
    ret = self.system_username + " => " + self.host_name
    return ret

当业务有需求如对host_name进行分组显示,在代码中用到了annotate,如下。

>>> from django.db.models import Count 
>>> from assets.models import SystemUserPushHistory
>>> p = SystemUserPushHistory.objects.values("host_name").annotate(dcount=Count(1))
>>> p
<QuerySet [{'host_name': '点2', 'dcount': 1}, {'host_name': '点3', 'dcount': 2}, {'host_name': '点2', 'dcount': 1}, {'host_name': '点3', 'dcount': 1}]>
>>> print(p.query)
SELECT `assets_systemuser_push_history`.`host_name`, COUNT(1) AS `dcount` FROM `assets_systemuser_push_history` GROUP BY `assets_systemuser_push_history`.`host_name`, `assets_systemuser_push_history`.`date_create` ORDER BY `assets_systemuser_push_history`.`date_create` DESC

可以看到,所得到的结果并不像我们预期的一样,之后把执行的sql输出出来可以看到在group by的时候是对host_name和date_create进行分组,原因就是因为我们在model类中设置了ordering,去掉之后代码运行正常。

使用distinct和上面的情况类似,就不列出来了。

以上这篇django orm模块中的 is_delete用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python实现QQ游戏大家来找茬辅助工具
Sep 14 Python
python开发之thread实现布朗运动的方法
Nov 11 Python
基于python的图片修复程序(实现水印去除)
Jun 04 Python
Python实现读写INI配置文件的方法示例
Jun 09 Python
Python求解任意闭区间的所有素数
Jun 10 Python
如何用Python合并lmdb文件
Jul 02 Python
PyQt4实时显示文本内容GUI的示例
Jun 14 Python
Python字符串处理的8招秘籍(小结)
Aug 13 Python
Python运行异常管理解决方案
Mar 09 Python
Python并发concurrent.futures和asyncio实例
May 04 Python
查看keras的默认backend实现方式
Jun 19 Python
python-for x in range的用法(注意要点、细节)
May 10 Python
Python3批量创建Crowd用户并分配组
May 20 #Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
May 20 #Python
django中related_name的用法说明
May 20 #Python
在django中form的label和verbose name的区别说明
May 20 #Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
May 20 #Python
django model 条件过滤 queryset.filter(**condtions)用法详解
May 20 #Python
如何在sublime编辑器中安装python
May 20 #Python
You might like
PHP将DateTime对象转化为友好时间显示的实现代码
2011/09/20 PHP
PHP设计模式之解释器模式的深入解析
2013/06/13 PHP
PHP CodeIgniter框架的工作原理研究
2015/03/30 PHP
Yii2创建控制器(createController)方法详解
2016/07/23 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
php多进程应用场景实例详解
2019/07/22 PHP
极酷的javascirpt,让你随意编辑任何网页
2007/02/25 Javascript
常用Extjs工具:Extjs.util.Format使用方法
2012/03/22 Javascript
jQuery元素的隐藏与显示实例
2015/01/20 Javascript
javascript控制图片播放的实现代码
2020/07/29 Javascript
jquery如何获取元素的滚动条高度等实现代码
2015/10/19 Javascript
浅析Bootstrip的select控件绑定数据的问题
2016/05/10 Javascript
只要1K 纯JS脚本送你一朵3D红色玫瑰
2016/08/09 Javascript
AngularJS动态加载模块和依赖的方法分析
2016/11/08 Javascript
原生js轮播特效
2017/05/18 Javascript
js评分组件使用详解
2017/06/06 Javascript
微信小程序开发中的疑问解答汇总
2017/07/03 Javascript
JavaScript 完成注册页面表单校验的实例
2017/08/19 Javascript
Vue 动态设置路由参数的案例分析
2018/04/24 Javascript
详解基于mpvue的小程序markdown适配解决方案
2018/05/08 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
[57:22]完美世界DOTA2联赛PWL S2 FTD vs PXG 第二场 11.27
2020/12/01 DOTA
Python实现的监测服务器硬盘使用率脚本分享
2014/11/07 Python
JS设计模式之责任链模式实例详解
2018/02/03 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
对Python中DataFrame按照行遍历的方法
2018/04/08 Python
python通过微信发送邮件实现电脑关机
2018/06/20 Python
python手写均值滤波
2020/02/19 Python
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
四年的个人工作自我评价
2013/12/10 职场文书
初中成绩单评语
2014/12/29 职场文书
2016年政治理论学习心得体会
2016/01/25 职场文书
2019年恭贺升学祝福语集锦
2019/08/15 职场文书
深入理解python协程
2021/06/15 Python
详细谈谈JavaScript中循环之间的差异
2021/08/23 Javascript