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中的mock库对Python代码进行模拟测试
Apr 16 Python
在Python的Django框架中实现Hacker News的一些功能
Apr 17 Python
Python实现的RSS阅读器实例
Jul 25 Python
Python3访问并下载网页内容的方法
Jul 28 Python
Python视频爬虫实现下载头条视频功能示例
May 07 Python
Python和Go语言的区别总结
Feb 20 Python
详解Python字符串切片
May 20 Python
python中的函数递归和迭代原理解析
Nov 14 Python
Pytorch 实现权重初始化
Dec 31 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
Mar 16 Python
如何基于python对接钉钉并获取access_token
Apr 21 Python
pandas取dataframe特定行列的实现方法
May 24 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
第八节 访问方式 [8]
2006/10/09 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
2014/12/05 PHP
php正则preg_replace_callback函数用法实例
2015/06/01 PHP
学习php设计模式 php实现访问者模式(Visitor)
2015/12/07 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
javascript读取xml
2006/11/04 Javascript
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
关于document.cookie的使用javascript
2010/10/29 Javascript
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
通过action传过来的值在option获取进行验证的方法
2013/11/14 Javascript
jquery-syntax动态语法着色示例代码
2014/05/14 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
2014/05/28 Javascript
JavaScript模版引擎的基本实现方法浅析
2016/02/15 Javascript
node.js连接mongoDB数据库 快速搭建自己的web服务
2016/04/17 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
react-router v4如何使用history控制路由跳转详解
2018/01/09 Javascript
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
2020/07/17 Javascript
[59:48]LGD vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
python脚本替换指定行实现步骤
2017/07/11 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
HTML5中外部浏览器唤起微信分享
2020/01/02 HTML / CSS
SEPHORA丝芙兰捷克官网:购买香水、化妆品和护肤品
2018/11/26 全球购物
全球性的在线鞋类品牌:Public Desire
2019/04/03 全球购物
成人毕业生自我鉴定
2013/10/18 职场文书
库房保管员岗位职责
2014/04/07 职场文书
另类冲刺标语
2014/06/24 职场文书
护士优质服务演讲稿
2014/08/26 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书