django 3..2.15版本怎么做成批量新增或更新, 语法如mysql ON DUPLICATE KEY UPDATE
时间: 2023-10-13 13:24:43 浏览: 164
在 Django 3.2.15 版本中,可以使用 `bulk_create` 方法来实现批量新增,使用 `bulk_update` 方法来实现批量更新。
但是 Django 并没有直接提供类似于 MySQL 中 `ON DUPLICATE KEY UPDATE` 的语法,需要我们自己实现。
一种实现方式是先尝试通过 `bulk_create` 方法批量插入数据,如果有重复的数据则会抛出 `IntegrityError` 异常,我们可以捕获这个异常,然后再使用 `bulk_update` 方法来批量更新已存在的数据。
示例代码如下:
```python
from django.db import IntegrityError
# 假设有一个名为 MyModel 的模型
data = [
MyModel(field1=value1, field2=value2),
MyModel(field1=value3, field2=value4),
# ...
]
try:
MyModel.objects.bulk_create(data)
except IntegrityError:
# 如果有重复数据,捕获 IntegrityError 异常并进行批量更新
for obj in data:
obj.save(update_fields=['field1', 'field2'])
```
需要注意的是,使用这种方式实现批量新增或更新需要我们手动指定需要更新的字段,因此在使用时需要格外小心。
阅读全文