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使用ctypes模块调用windowsapi获取系统版本示例
Apr 17 Python
Python按行读取文件的简单实现方法
Jun 22 Python
Python3实现发送QQ邮件功能(文本)
Dec 15 Python
Python实现的摇骰子猜大小功能小游戏示例
Dec 18 Python
matplotlib绘制动画代码示例
Jan 02 Python
5个很好的Python面试题问题答案及分析
Jan 19 Python
scrapy-redis源码分析之发送POST请求详解
May 15 Python
python 生成器和迭代器的原理解析
Oct 12 Python
Python定义一个Actor任务
Jul 29 Python
python中如何使用虚拟环境
Oct 14 Python
python中的对数log函数表示及用法
Dec 09 Python
python绘图subplots函数使用模板的示例代码
Apr 30 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
基于文本的留言簿
2006/10/09 PHP
php使用异或实现的加密解密实例
2013/09/04 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
Laravel核心解读之异常处理的实践过程
2019/02/24 PHP
YII框架关联查询操作示例
2019/04/29 PHP
在IE模态窗口中自由查看HTML源码的方法
2007/03/08 Javascript
jquery实现文本框数量加减功能的例子分享
2014/05/10 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
2014/08/16 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
深入学习jQuery中的data()
2016/12/22 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
jQuery实现的分页功能示例
2017/01/22 Javascript
jQuery动态添加.active 实现导航效果代码思路详解
2017/08/29 jQuery
vue中v-for循环给标签属性赋值的方法
2018/10/18 Javascript
详解使用webpack+electron+reactJs开发windows桌面应用
2019/02/01 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
js实现弹幕墙效果
2020/12/10 Javascript
让python json encode datetime类型
2010/12/28 Python
简单介绍Python中的decode()方法的使用
2015/05/18 Python
Python的Django框架中的数据库配置指南
2015/07/17 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
pyqt5移动鼠标显示坐标的方法
2019/06/21 Python
浅谈Python 函数式编程
2020/06/20 Python
物流仓储计划书
2014/01/10 职场文书
优秀干部获奖感言
2014/01/31 职场文书
学生鉴定评语大全
2014/05/05 职场文书
防灾减灾日活动总结
2014/08/26 职场文书
无财产无子女离婚协议书范文
2014/09/14 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
只需要12页,掌握撰写一流商业计划书的技巧
2019/05/07 职场文书
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS
Oracle 区块链表创建过程详解
2021/05/15 Oracle
分析Python list操作为什么会错误
2021/11/17 Python
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫