正确使用 Django 的批量更新追加到列表

Posted

技术标签:

【中文标题】正确使用 Django 的批量更新追加到列表【英文标题】:Using Django's Bulk Update Correctly to Append to List 【发布时间】:2022-01-22 10:30:58 【问题描述】:

我在validated_data 中有一个项目的字典列表,我目前更新用户并保存到数据库。

for book in validated_data:
    book.user = self.context['request'].user
    obj.save()

我想改用 Django 的批量更新。我找到了following example:

我是这样修改的:

for book in validated_data:
    book.user = self.context['request'].user

Book.objects.bulk_update(validated_data, update_fields = ['user']) 

但是,我不明白这是如何工作的。首先,validated_data 在此示例中从未实际更新。

如何更新validated_data 中的每个项目以包含我的新值?

【问题讨论】:

【参考方案1】:

作为,Django bulk_update not working on default attributes,

我认为您正在使用过时的实例,因此您可能需要刷新每个书籍实例。

for book in validated_data:
    book..refresh_from_db()

【讨论】:

以上是关于正确使用 Django 的批量更新追加到列表的主要内容,如果未能解决你的问题,请参考以下文章

在 Django Rest Framework 中批量更新数据

Django 批量更新两个表的数据

批量插入数据库数据,有则更新,无则追加

python的append的NoneType问题 & map批量向列表中追加元素

如何使用 Django 进行“批量更新”?

使用列表参数批量插入/更新调用到 Dapper 中对数据库的单个操作/请求