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 获取et和excel的版本号
Apr 09 Python
python发送邮件的实例代码(支持html、图片、附件)
Mar 04 Python
Python列表计数及插入实例
Dec 17 Python
Python回调函数用法实例详解
Jul 02 Python
python 实现自动远程登陆scp文件实例代码
Mar 13 Python
Python双精度浮点数运算并分行显示操作示例
Jul 21 Python
Python连接phoenix的方法示例
Sep 29 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
Nov 29 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
Jun 02 Python
通过实例简单了解python yield使用方法
Aug 06 Python
Python 删除List元素的三种方法remove、pop、del
Nov 16 Python
详解Pycharm第三方库的安装及使用方法
Dec 29 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
Terran魔法科技
2020/03/14 星际争霸
PHP 中的面向对象编程:通向大型 PHP 工程的办法
2006/12/03 PHP
PHP 可阅读随机字符串代码
2010/05/26 PHP
基于PHP文件操作的详细诠释
2013/06/21 PHP
php旋转图片90度的方法
2013/11/07 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
2015/12/24 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
javascript实现 在光标处插入指定内容
2007/05/25 Javascript
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
图片onload事件触发问题解决方法
2011/07/31 Javascript
JS完成代码前最好对其做5件事
2013/04/07 Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
2016/02/23 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
Angularjs---项目搭建图文教程
2016/07/08 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
jQuery基于ajax操作json数据简单示例
2017/01/05 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
JavaScript实现的简单Tab点击切换功能示例
2018/07/06 Javascript
详解Nuxt.js部署及踩过的坑
2018/08/07 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
2020/02/24 Javascript
vue中watch和computed的区别与使用方法
2020/08/23 Javascript
Python3之手动创建迭代器的实例代码
2019/05/22 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
2020/06/28 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
西班牙伏林航空公司:Vueling
2016/08/05 全球购物
经典c++面试题四
2015/05/14 面试题
人力资源总监工作说明
2014/03/03 职场文书
师德师风自查材料
2014/10/14 职场文书
单位领导婚礼致辞
2015/07/28 职场文书