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不能更新多于一个数据的信息

导入功能中的 update_or_create

django update_or_create 得到“重复键值违反唯一约束”

Django 2021年最新版教程17数据库操作 models 存在更新 不存在新建update_or_create

是否有用于使用 VTL 的 AWS Appsync 的 Model.objects.update_or_create()?

Django 批处理/批量更新或创建?