update_or_create()
update_or_create(默认值=无,** kwargs)¶
使用给定更新对象的便捷方法,kwargs必要时创建新对象。这defaults是用于更新对象的(字段,值)对的字典。值中的值defaults可以是callables。
返回一个元组,其中是创建或更新的对象,是一个布尔值,指定是否创建了新对象。(object, created)objectcreated
该update_or_create方法尝试根据给定的数据从数据库中获取对象kwargs。如果找到匹配项,则会更新defaults字典中传递的字段 。
这意味着作为boilerplatish代码的快捷方式。例如:
defaults = {'first_name': 'Bob'}
try:
obj = Person.objects.get(first_name='John', last_name='Lennon')
for key, value in defaults.items():
setattr(obj, key, value)
obj.save()
except Person.DoesNotExist:
new_values = {'first_name': 'John', 'last_name': 'Lennon'}
new_values.update(defaults)
obj = Person(**new_values)
obj.save()
随着模型中字段数量的增加,这种模式变得非常笨拙。上面的例子可以update_or_create()像这样重写:
obj, created = Person.objects.update_or_create(
first_name='John', last_name='Lennon',
defaults={'first_name': 'Bob'},
)
update_or_create()的更多相关文章
- django ORM中update_or_create功能,如果只要匹配某一特定字段呢
今天发现的需求,在官方文档找到说法: In English, that means start with any non-'defaults' keyword argument that doesn’ ...
- django中使用Model的update_or_create函数时报错
官方使用示例: obj, created = Person.objects.update_or_create( first_name='John', last_name='Lennon', defau ...
- Django ORM中使用update_or_create功能再解
以前,我解过这个问题,现在百度搜索,发了像也只能找到我这个帖子. https://www.cnblogs.com/aguncn/p/4922654.html 今天,看了看官方文档,关于这个update ...
- django update_or_create
update_or_create question.votes.update_or_create(user=request.user, defaults={"value": val ...
- [django]update_or_create使用场景
update_or_create 作用是为了添加数据时防止重复. 先去查询, 如果没有在创建, 如果有则更新. update_or_create用法与密码存储实例 create方法 如果id是None ...
- get_or_create update_or_create
django/query.py at master · django/django https://github.com/django/django/blob/master/django/db/mod ...
- [原创]django+ldap实现单点登录(装饰器和缓存)
前言 参考本系列之前的文章,我们已经搭建了ldap并且可以通过django来操作ldap了,剩下的就是下游系统的接入了,现在的应用场景,我是分了2个层次,第一层次是统一认证,保证各个系统通过ldap来 ...
- Django之Model操作
Django之Model操作 本节内容 字段 字段参数 元信息 多表关系及参数 ORM操作 1. 字段 字段列表 AutoField(Field) - int自增列,必须填入参数 primary_ke ...
- django之一些feature
前端之django一些feature 本节内容 cookie session 跨站请求保护 分页 序列化 model模块 CBV和FBV 模板渲染对象 1. cookie cookie 是一种发送到客 ...
随机推荐
- 开源虚拟化KVM(一)搭建部署与概述
一,KVM概述 1.1 虚拟化概述 在计算机技术中,虚拟化意味着创建设备或资源的虚拟版本,如服务器,存储设备,网络或者操作系统等等 [x] 虚拟化技术分类: 系统虚拟化(我们主要讨论的反向) 存储虚拟 ...
- 第一次oo博客作业--表达式求导
(1)说实话我这部分真的不知道写些什么,因为我只有第三次作业写了两个类,前两次都是一个类,一个类的好处可能也就是写起来比较方便(不用抽象什么共性了,直接c语言莽过去),缺点很多,架构不清晰,可读性不高 ...
- 【转】未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。
“/xxxxx”应用程序中的服务器错误. ------------------------------------------------------------------------------- ...
- java后台动态生成导出excel
p ublic void export(List<WechatUser> wechatUserList, HttpServletResponse response) throws IOEx ...
- Go语言编程读书笔记:Go channel(1)
Channel是Go语言在语言级别提供的goroutine间的通信方式.我们可以用channel在两个或多个goroutine之间传递消息.channel是进程内的通信方式,因此通过channel传递 ...
- 复杂JSON对象的查询与合并
一个表里存放了全国各地地区.省.市.县区的数据,为了提高加载速度我保存成了本地的JSON文件 结构大致如下: [{ "text": "中华人民共和国", &qu ...
- 《Orange‘s》Loader
Loader 作用 引导扇区只有512个字节,能做的事情很少,局限性太大.所以需要一个程序,通过引导扇区加载入内存,然后将控制权交给它,这样就突破了512字节的限制.这个程序便是loader. 加载过 ...
- linux应用之test命令详细解析
test命令用法. 功能:检查文件和比较值 1)判断表达式 if test (表达式为真) if test !表达式为假 test 表达式1 –a 表达式2 两个表 ...
- 使用syslog服务器存储cp防火墙日志配置
版本:R80.20 step1:创建syslog 服务器,如下图: step2:配置syslog 服务器,如下图: step3:配置网关日志服务器,添加设定的syslog服务器,如下图: st ...
- trunk端口配置错误导致环路
端口下 switchport mode trunk spannning-tree portfast 上述两个命令同时执行将导致环路