码迷,mamicode.com
首页 > 其他好文 > 详细

Django ORM中使用update_or_create功能

时间:2019-03-12 18:27:50      阅读:1120      评论:0      收藏:0      [点我收藏+]

标签:今天   条件   tle   for   doc   obj   ems   alt   yaml   

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功能

标签:今天   条件   tle   for   doc   obj   ems   alt   yaml   

原文地址:https://www.cnblogs.com/liujuejun/p/10518352.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!