当前位置: 首页 > 面试题库 >

如何使用Django批量更新?

西门嘉石
2023-03-14
问题内容

我想用Django更新表格-原始SQL中的内容如下:

update tbl_name set name = 'foo' where name = 'bar'

我的第一个结果是这样的-但这很讨厌,不是吗?

list = ModelClass.objects.filter(name = 'bar')
for obj in list:
    obj.name = 'foo'
    obj.save()

有没有更优雅的方式?


问题答案:

UPD Django 2.2版本现在具有bulk_update。

请参阅以下django文档部分

一次更新多个对象

简而言之,你应该可以使用:

ModelClass.objects.filter(name='bar').update(name="foo")

你还可以使用F对象来执行诸如增加行数之类的操作:

from django.db.models import F
Entry.objects.all().update(n_pingbacks=F('n_pingbacks') + 1)

请参阅文档:https : //docs.djangoproject.com/en/1.9/topics/db/queries/

但是,请注意:

  • 这不会使用ModelClass.save方法(因此,如果你内部有逻辑,则不会被触发)。
  • 没有Django信号将被发射。
  • 你无法.update()在切片的QuerySet上执行,而必须在原始QuerySet上执行,因此你需要依靠.filter()and .exclude()方法。


 类似资料:
  • 我想用Django更新一个表-类似这样的原始SQL: 我的第一个结果是这样的——但这很恶心,不是吗? 有没有更优雅的方式?

  • 问题内容: 我有一个包含一千万行的表,需要与另一个表连接并更新所有数据。一小时要花费超过1个小时的时间,这使我的事务日志增加了10+ GB。是否有另一种方法可以增强此性能? 我相信,每次更新后,都会检查索引和约束并记录所有信息。有没有一种方法可以告诉SQL Server仅在更新完成后才检查约束并最小化记录更新操作? 我的查询如下。我已经修改了一些名称,以便于阅读。 编辑: 如注释中所述,表定义将类

  • 本文向大家介绍Django如何批量创建Model,包括了Django如何批量创建Model的使用技巧和注意事项,需要的朋友参考一下 1.前言: 将测试数据全部敲入数据库非常繁琐,而且如果与合作伙伴一起开发,部署,那么他们肯定也不想把时间花在一个一个录入数据的繁琐过程中,这时候,创建一个批量录入数据的脚本(population script)就非常有必要。 2.代码: 假设在models.py中定义

  • 问题内容: 我需要在一个请求中进行多次更新。 在我有: 因此需要进行更改。 这是我的序列化器代码: 我试图添加: 和 但这不起作用。如何更改此代码以进行多次更新。我的json请求 问题答案: 这是您请求的CreateMixins或UpdateMixins的示例。 ======================查看========================== ====== ==========

  • 问题内容: 是否可以在露天使用CMIS进行批量更新。 我有不同的文档类型,并且每个文档类型在露天仓库中都有多个文档。 现在,我的要求是,如果我将更新任何文档的任何单个属性,则它应与相同类型的所有文档一起反映。 我可以使用CMIS吗? 如果是,请提供步骤和示例代码。 提前致谢 问题答案: 困难的方法(和健谈的方法)是查询您的文档,然后在每个文档上设置属性。但是CMIS规范实际上提供了一种更好的方法:

  • 问题内容: 这是我的用例: 我有多个并行运行的芹菜任务 每个任务可以批量 创建 或 更新 许多对象。为此,我正在使用django-bulk 所以基本上我使用的是一个非常方便的功能insert_or_update_many: 它首先执行选择 如果找到对象,它将对其进行更新 否则会创建它们 但这引入了并发问题。例如:如果在第1步中不存在对象,则将其添加到要插入的对象列表中。但是在此期间,另一个Cele