Django中orm的双重方法

orm中的双重方法

更新或创建

 Draw2DDevice.objects.update_or_create(
                    defaults={'x': 777, 'y': 777,}, device_id=13, version_id=1)

defaults是需要更新的数据字典,后面参数是用来查询的是否存在的,如果存在就更新,反之创建

查询或创建

get_or_create 是查找对象的一种便捷方法, 其最大的功能点是在目标对象不存在的时候, 可以根据参数创建对象。

它实际上返回一个 (object, created)元祖,第一个元素是您要检索 get 的模型的实例,第二个元素是个是否创建的布尔值,用户判断实例是否是创建的。

如果实例已经存在数据库中, 并且通过参数可以找到, 那么 created 为 False, 反之则会创建, created 为 True。

user, b = User.objects.get_or_create(u_id=1, name="张三", defaults={'address':'上海'})
print(user)

等同于

users = User.objects.filter(u_id=1, name="张三").first()
if user:
    print(user)
else:
    user = User.objects.create(u_id=1, name="张三", address="上海")
    print(user)
  • **kwargs,数据的查询条件。
  • defaults,如果没有查到数据,创建数据时提供的填充数据。

注意事项

这个方法不是 原子的,如果并发操作会出现问题

Original: https://www.cnblogs.com/zonghan/p/16567287.html
Author: zong涵
Title: Django中orm的双重方法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/611315/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • CentOS 7安装FTP服务器

    修改 vsftpd.conf配置文件,禁用匿名用户访问ftp服务器 vim /etc/vsftpd/vsftpd.conf 将配置文件中的 anonymous_enable=YES…

    Linux 2023年5月27日
    0149
  • Windows针对子目录共享权限控制

    Windows的共享文件设置有两种,一种是共享这一个目录然后里面的子文件,文件夹权限则集成;一种是共享这个目录后,里面的子文件与文件夹权限可单独控制。 共享一 image-2021…

    Linux 2023年6月8日
    0119
  • 常用命-sar

    作者:Outsrkem原文链接:https://www.cnblogs.com/outsrkem/p/14725402.html本文版权归作者所有,欢迎转载,但未经作者同意必须保留…

    Linux 2023年6月6日
    0108
  • PYTORCH: 60分钟 | TENSORS

    Tensor是一种特殊的数据结构,非常类似于数组和矩阵。在PyTorch中,我们使用tensor编码模型的输入和输出,以及模型的参数。Tensor类似于Numpy的数组,除了ten…

    Linux 2023年6月16日
    0200
  • Redis集群原理及搭建(Twemproxy、Predixy代理搭建、Redis Cluster集群)

    1 引言 网上很多文章会把集群和主从复制混为一谈,其实这两者是存在本质差异的,各自解决的问题不同。Redis在单机/单节点/单实例存在的风险: 单点故障、 容量有限、 并发压力问题…

    Linux 2023年6月13日
    0119
  • [Git系列] 前言

    Git 简介 Git 是一个重视速度的分布式版本控制和代码管理系统,最初是由 Linus Torvalds 为开发 Linux 内核而设计并开发的,是一款遵循二代 GUN 协议的免…

    Linux 2023年5月27日
    0158
  • 20191223-Exp3-免杀原理

    Exp3-免杀原理 姓名:张俊怡 学号:20191223 课程:网络对抗技术 一、实践内容 方法 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件 veil,加…

    Linux 2023年6月8日
    0170
  • 吴军《浪潮之巅》阅读随笔(二)信息产业的规律性

    在这本书上册的最后一章《信息产业的规律性》中,有几个问题让我很感兴趣。 在信息科技某个领域发展成熟之后,一般在全球容不下三个以上的主要竞争者,这个行业一定有一个老大、是这个行业的主…

    Linux 2023年6月14日
    0161
  • shell: 获取每行文本的最后几个字符

    tail方式 tail参数-c就可以获取最后的几个字节 -c, –bytes=[+]NUM output the last NUM bytes; or use -c +NUM t…

    Linux 2023年6月7日
    0138
  • 一文让你明白Redis持久化

    网上虽然已经有很多类似的介绍了,但我还是自己总结归纳了一下,自认为内容和细节都是比较齐全的。 文章篇幅有 4k 多字,货有点干,断断续续写了好几天,希望对大家有帮助。不出意外地话,…

    Linux 2023年5月28日
    0109
  • redis持久化存储

    redis持久化存储 redis多被用于缓存和消息中间件,当被用作缓存时,数据的读写都是在内存中进行的,而内存一旦在主机断电或者主机重启时里面的数据将被清空,为保证数据不被丢失,r…

    Linux 2023年6月7日
    0127
  • shell大全定时清空文件内容,定时记录文件大小

    shell大全定时清空文件内容,定时记录文件大小 bash;gutter:true;</p> <h1>!/bin/bash</h1> <h…

    Linux 2023年5月28日
    0146
  • 错误域控降级导致解析问题

    近两天在给分部安装辅助域控的时候,总是安装不成功,或者安装时成功了但是无法复制主域或者其他域控的信息,同步失败,还有就是它一直没有网。 解决方案 经过排查发现域名dns解析不对,经…

    Linux 2023年6月8日
    0137
  • python 结构(序列分解)

    一、结构 结构的主要作用是将一个序列分解成若干个单独的变量。 1、对列表进行分解 2、对元组进行分解 3、对字典进行分解 4、对集合进行分解 5、对字符串进行分解 6、对文件句柄进…

    Linux 2023年6月7日
    0111
  • 如何获取 Docker 容器的 IP 地址

    查询单个容器 IP 地址: 使用下面命令可以查看容器详细信息,里面包含 IP 地址信息: docker inspect <container id> </cont…

    Linux 2023年6月7日
    0115
  • Redis主从复制搭建及原理

    1 简介 1.1 Redis在单机、单节点、单实例下存在的问题 单机故障 内存容量有限 访问压力 Redis主从架构主要解决的问题:单机故障和访问压力,通过主从架构可以将访问流量分…

    Linux 2023年6月13日
    0121
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球