首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Django“批量更新”?

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

Stack Overflow用户
提问于 2018-04-03 10:26:13
回答 2查看 0关注 0票数 0

我想用Django更新表 。

在原始SQL中是这样的:

代码语言:javascript
复制
update tbl_name set name = 'foo' where name = 'bar'

我的第一个结果就是这样:

代码语言:javascript
复制
list = ModelClass.objects.filter(name = 'bar')
for obj in list:
    obj.name = 'foo'
    obj.save()

有没有更好的方式?

EN

回答 2

Stack Overflow用户

发布于 2018-04-03 18:37:42

请参阅django文档中的update函数:https//docs.djangoproject.com/en/dev/ref/models/querysets/#update

总之你应该能够使用:

代码语言:javascript
复制
ModelClass.objects.filter(name='bar').update(name="foo")

你还可以使用F对象来执行增加行等操作:

代码语言:javascript
复制
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信号会被发射。
票数 0
EN

Stack Overflow用户

发布于 2018-04-03 20:19:41

使用django-bulk-update

安装:pip install django-bulk-update

实现:

代码语言:txt
复制
from bulk_update.helper import bulk_update

random_names = ['Walter', 'The Dude', 'Donny', 'Jesus']
people = Person.objects.all()

for person in people:
    r = random.randrange(4)
    person.name = random_names[r]

bulk_update(people)  # updates all columns using the default db
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档