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()的更多相关文章

  1. django ORM中update_or_create功能,如果只要匹配某一特定字段呢

    今天发现的需求,在官方文档找到说法: In English, that means start with any non-'defaults' keyword argument that doesn’ ...

  2. django中使用Model的update_or_create函数时报错

    官方使用示例: obj, created = Person.objects.update_or_create( first_name='John', last_name='Lennon', defau ...

  3. Django ORM中使用update_or_create功能再解

    以前,我解过这个问题,现在百度搜索,发了像也只能找到我这个帖子. https://www.cnblogs.com/aguncn/p/4922654.html 今天,看了看官方文档,关于这个update ...

  4. django update_or_create

    update_or_create question.votes.update_or_create(user=request.user, defaults={"value": val ...

  5. [django]update_or_create使用场景

    update_or_create 作用是为了添加数据时防止重复. 先去查询, 如果没有在创建, 如果有则更新. update_or_create用法与密码存储实例 create方法 如果id是None ...

  6. get_or_create update_or_create

    django/query.py at master · django/django https://github.com/django/django/blob/master/django/db/mod ...

  7. [原创]django+ldap实现单点登录(装饰器和缓存)

    前言 参考本系列之前的文章,我们已经搭建了ldap并且可以通过django来操作ldap了,剩下的就是下游系统的接入了,现在的应用场景,我是分了2个层次,第一层次是统一认证,保证各个系统通过ldap来 ...

  8. Django之Model操作

    Django之Model操作 本节内容 字段 字段参数 元信息 多表关系及参数 ORM操作 1. 字段 字段列表 AutoField(Field) - int自增列,必须填入参数 primary_ke ...

  9. django之一些feature

    前端之django一些feature 本节内容 cookie session 跨站请求保护 分页 序列化 model模块 CBV和FBV 模板渲染对象 1. cookie cookie 是一种发送到客 ...

随机推荐

  1. 前端面试之Javascript

    1,JS基本的数据类型和引用类型: (1)基本数据类型:number,string,null,undefined,symbol--栈: (2)引用数据类型:object,array,function- ...

  2. uni-app 使用 iconfont

    使用 uni-app 做项目时需要用到 iconfont.和 web 使用略有差别.谨以此记录. 因为 uni-app 不能使用本地字体图标库,所以不能直接下载使用. 1.将iconfont中需要的图 ...

  3. 元组拆包 与 python拆包

    一.元组拆包(元组解包.迭代解包) 元组拆包可以应用到任何可迭代对象上(任何迭代对象),被可迭代对象中的元素数量必须要跟接受这些元素的元组的空档数一致.也可以使用用 * 来表示忽略多余的元素. 一般的 ...

  4. model 字段参数 choice

    class Banner(NewsBase): ''' 轮播图 ''' PRI_CHOICES = [ # 优先级的限制选择范围 (1,'第一级'), (2,'第二级'), (3,'第三级'), (4 ...

  5. idea激活方式

    idea破解方法:转自https://note.youdao.com/ynoteshare1/index.html?id=d0f3fb42bfa1bb65a33115a1b6140f5f&ty ...

  6. Jmeter之集合点(Synchronizing timer 同步定时器)

    1.集合点介绍 LR中集合点可以设置多个虚拟用户等待到一个点,同时触发一个事务,以达到模拟真实环境下多个用户同时操作,实现性能测试的最终目的.jmeter中使用Synchronizing Timer实 ...

  7. LoadRunner 11.00安装篇(Win 10)

    参考博文: https://blog.csdn.net/xianjie0318/article/details/78625980 https://www.cnblogs.com/VseYoung/p/ ...

  8. 不常用但是很实用的css记录

    本文主旨是记录一些不常用但是非常炫酷的css属性,提升用户体验的捷径之一. 1.background-attachment  滚动视差    https://codepen.io/Chokcoco/p ...

  9. Struts2各个功能详解(2)-输入校验和拦截器

    前面知道了struts2的架构图和struts2的自动封装表单参数和数据类型自动转换,今天来学struts2的第三第四个东西,输入校验和拦截器.  一:输入校验 客户端校验进行基本校验,如检验非空字段 ...

  10. ajax获取数据中文显示问号

    技术交流群:816227112 问题: 解决 : 在 response.getWriter() 之前加上 response.setContentType("text/html;charset ...