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 21 Python
python中安装模块包版本冲突问题的解决
May 02 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
Jun 14 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
Jul 06 Python
hmac模块生成加入了密钥的消息摘要详解
Jan 11 Python
Pandas DataFrame数据的更改、插入新增的列和行的方法
Jun 25 Python
django-filter和普通查询的例子
Aug 12 Python
NumPy中的维度Axis详解
Nov 26 Python
Python numpy.zero() 初始化矩阵实例
Nov 27 Python
pandas实现将日期转换成timestamp
Dec 07 Python
用python解压分析jar包实例
Jan 16 Python
django前端页面下拉选择框默认值设置方式
Aug 09 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用SAX解析XML的实现代码与问题分析
2011/08/22 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
php支付宝在线支付接口开发教程
2016/09/19 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
2018/05/12 PHP
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
基于javascript实现数字英文验证码
2017/01/25 Javascript
原生js实现轮播图的示例代码
2017/02/20 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
vue省市区三联动下拉选择组件的实现
2017/04/28 Javascript
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
微信小程序实现的自定义分享功能示例
2019/02/12 Javascript
layui实现tab的添加拒绝重复的方法
2019/09/04 Javascript
Element中Slider滑块的具体使用
2020/07/29 Javascript
Python实现二分法算法实例
2015/02/02 Python
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
python dumps和loads区别详解
2020/02/04 Python
基于html5 canvas做批改作业的小插件
2020/05/20 HTML / CSS
英国汽车和货车租赁网站:Hertz英国
2016/09/02 全球购物
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
For Art’s Sake官网:手工制作的奢华眼镜
2018/12/15 全球购物
Notino法国:购买香水和化妆品
2019/04/15 全球购物
一道SQL存储过程面试题
2016/10/07 面试题
JVM是一个编译程序还是解释程序
2012/09/11 面试题
机械工程系毕业生求职信
2013/09/27 职场文书
保送生自荐信范文
2013/10/06 职场文书
运动会广播稿500字
2014/01/28 职场文书
小区物业门卫岗位职责
2014/04/10 职场文书
财务情况说明书范文
2014/05/06 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
2015年度企业工作总结
2015/05/21 职场文书