Django ORM中使用update_or_create功能
Posted liujuejun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django ORM中使用update_or_create功能相关的知识,希望对你有一定的参考价值。
https://www.cnblogs.com/aguncn/p/4922654.html
今天,看了看官方文档,关于这个update_or_create,有了新的作法。
原理,就是filter条件照写,但使用一个defaults
字典来来决定是新增还是更新。
我自己的写代码片断如下:
defaults = dict() defaults[‘name‘] = ‘{}-{}-yaml‘.format(app, env) defaults[‘content‘] = yaml_content AppEnvYamlOnline.objects.update_or_create(app=app, env=env, defaults=defaults,)
官网的手写版如下:
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()
官网的更新版如下:
obj, created = Person.objects.update_or_create( first_name=‘John‘, last_name=‘Lennon‘, defaults={‘first_name‘: ‘Bob‘}, )
以上是关于Django ORM中使用update_or_create功能的主要内容,如果未能解决你的问题,请参考以下文章
django单表操作中update_or_create不能更新多于一个数据的信息
django update_or_create 得到“重复键值违反唯一约束”
Django 2021年最新版教程17数据库操作 models 存在更新 不存在新建update_or_create
是否有用于使用 VTL 的 AWS Appsync 的 Model.objects.update_or_create()?