前言
当前django并没有提供能够批量创建或更新的方法,只有bulk_update
和bulk_create
以及create_or_update
,在实际业务中并不能满足我们的需求。因此才会有了bulk_update_or_create
一、代码实现
我们需要在我们的模型基类中重定义objects为我们的扩展类。
bulk_update_or_create共分为三步:1、查询数据库中包含当前数据的数据。2、调用父类批量创建bulk_create
方法,批量创建数据库中不存在的。3、调用父类批量更新bulk_update
方法,批量更新数据库中存在的。
ps:我们会在批量更新中定义一个update_fields = {"update_time"}
字段,
因为如果使用了add_now来自动更新时间,query.update 不会更新此此段,只有save中会,在save中对包含add_now的字段做了处理.
二、使用
common_keys :
字典,通用的筛选项,会传递到orm的filter中
unique_key_name :
字符串,唯一的字段的名称
unique_key_to_defaults :
字典,key为唯一的值,value为更新的数据
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。