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调用windows api锁定计算机示例
Apr 17 Python
Python遍历指定文件及文件夹的方法
May 09 Python
python实现红包裂变算法
Feb 16 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
Jan 08 Python
python+pyqt5实现图片批量缩放工具
Mar 18 Python
Python中一个for循环循环多个变量的示例
Jul 16 Python
python 自定义装饰器实例详解
Jul 20 Python
python 获取当前目录下的文件目录和文件名实例代码详解
Mar 10 Python
Python 利用OpenCV给照片换底色的示例代码
Aug 03 Python
pandas apply使用多列计算生成新的列实现示例
Feb 24 Python
python中%格式表达式实例用法
Jun 18 Python
Python爬虫入门案例之回车桌面壁纸网美女图片采集
Oct 16 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 变量定义和变量替换的方法
2009/07/30 PHP
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
PHP读取RSS(Feed)简单实例
2014/06/12 PHP
php随机生成数字字母组合的方法
2015/03/18 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
2015/11/18 PHP
Javascript的构造函数和constructor属性
2010/01/09 Javascript
JavaScript中SQL语句的应用实现
2010/05/04 Javascript
面向对象的Javascript之三(封装和信息隐藏)
2012/01/27 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
javascript动画之磁性吸附效果篇
2016/12/09 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
2017/02/17 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
2019/09/03 Javascript
layer iframe 设置关闭按钮的方法
2019/09/12 Javascript
js仿360开机效果
2019/12/26 Javascript
微信小程序实现多张图片上传功能
2020/11/18 Javascript
讲解python参数和作用域的使用
2013/11/01 Python
Python json模块使用实例
2015/04/11 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
python实现list由于numpy array的转换
2018/04/04 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
彻底理解Python中的yield关键字
2019/04/01 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
2020/04/22 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
Python ConfigParser模块的使用示例
2020/10/12 Python
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
Spartoo荷兰:鞋子、包包和服装
2018/07/12 全球购物
Nike法国官方网站:Nike.com FR
2018/07/22 全球购物
2014年妇委会工作总结
2014/12/10 职场文书
2016母亲节感恩话语
2015/12/09 职场文书
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB
tomcat默认最大连接数及相关调整方法
2022/05/06 Servers