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实现随机密码字典生成器示例
Apr 09 Python
Python内置函数Type()函数一个有趣的用法
Feb 18 Python
Python实现抓取城市的PM2.5浓度和排名
Mar 19 Python
Python文件处理
Feb 29 Python
《Python学习手册》学习总结
Jan 17 Python
python+pygame实现坦克大战
Sep 10 Python
使用Python制作新型冠状病毒实时疫情图
Jan 28 Python
python+gdal+遥感图像拼接(mosaic)的实例
Mar 10 Python
python 删除excel表格重复行,数据预处理操作
Jul 06 Python
python openCV实现摄像头获取人脸图片
Aug 20 Python
Python项目打包成二进制的方法
Dec 30 Python
Django显示可视化图表的实践
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 array_intersect()函数使用代码
2009/01/14 PHP
php导入导出excel实例
2013/10/25 PHP
PHP中__set()实例用法和基础讲解
2019/07/23 PHP
Thinkphp 框架扩展之驱动扩展实例分析
2020/04/27 PHP
用JavaScript和注册表脚本实现右键收藏Web页选中文本
2007/01/28 Javascript
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
JS实现悬浮移动窗口(悬浮广告)的特效
2013/03/12 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
2014/02/22 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
2015/12/13 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
原生JS实现在线问卷调查投票特效
2017/01/03 Javascript
Vue 框架之键盘事件、健值修饰符、双向数据绑定
2018/11/14 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
JS实现简易留言板特效
2019/12/23 Javascript
JS eval代码快速解密实例解析
2020/04/23 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
[02:42]完美大师赛主赛事淘汰赛第三日观众采访
2017/11/25 DOTA
[46:37]LGD vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
浅析Python中的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
Fabric 应用案例
2016/08/28 Python
Python调用系统底层API播放wav文件的方法
2017/08/11 Python
python调用系统ffmpeg实现视频截图、http发送
2018/03/06 Python
windows10下安装TensorFlow Object Detection API的步骤
2019/06/13 Python
Django如何使用第三方服务发送电子邮件
2019/08/14 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
用python批量下载apk
2020/12/29 Python
Linux Interview Questions For software testers
2012/06/02 面试题
在校生钳工实习自我鉴定
2013/09/19 职场文书
自荐信如何“自荐”
2013/10/24 职场文书
食堂员工工作职责
2013/12/18 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
担保书范本
2015/01/20 职场文书
《失物招领》教学反思
2016/02/20 职场文书
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python
Pytest中skip和skipif的具体使用方法
2021/06/30 Python