[django]update_or_create使用场景

update_or_create

作用是为了添加数据时防止重复. 先去查询, 如果没有在创建, 如果有则更新.

update_or_create用法与密码存储实例

create方法

如果id是None 也会被创建成功

前端一般带id--create
不带id--update

能否将create和update来合并呢?

传统的create和update

  • 正常的场景
    前端post来数据, 无id则创建, 有id则更新.
    想来也没啥问题.

  • diy的场景

obj, created = Person.objects.update_or_create(
    first_name='John', last_name='Lennon',
    defaults={'first_name': 'Bob'},
)

这就要求model, unique_together ('last_name', 'first_name')
  • update_or_create
这个规则是: 

update_or_create(defaults=None, **kwargs)

执行规则: filter kwargs,create/update defaults
返回值为元组: (object, created),object为新建或者更新的对象,created为一个布尔值,表示是新建还是更新,True为新建

使用示例: password例子


当然这种的话, 可以常规的create和update来操作就好了. 因为是否带id.

参考:
Django 之 查看执行的sql语句

posted @ 2019-10-10 10:32  mmaotai  阅读(11484)  评论(0编辑  收藏  举报