python - 在 Django 中使用 JSONField 进行批量更新

标签 python django postgresql django-jsonfield

whens = [When(pk=x, then=_json['info'][str(x)]) for x in ids]
Clinics.objects.filter(pk__in=ids).update(
  info_json=Case(*whens, output_field=JSONField())
)

我想使用 JSONField() 的 Case-When 语句执行批量更新。当我在每次迭代中使用 save() 在一个愚蠢的循环中执行此操作时,一切正常。但上面的代码写了我:django.db.utils.ProgrammingError: can't adjustment type 'dict' 说第二行。我也尝试过 json.loads(),但没有成功。我应该怎么做才能执行多次更新?

我使用的是 Python 3.6.3 和 Django 1.11.16

最佳答案

目前,您只能迭代实例并一次更新一个实例。然而,Django 2.2将引入bulk_update()这将做你想做的事。

关于python - 在 Django 中使用 JSONField 进行批量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54234969/

相关文章:

python - 将多列列表拆分为单独的行

django - 如何停止从本地主机重定向到 https

sql - 在 PostgreSQL 中处理竞争条件

postgresql - 为什么 AWS RDS 备份需要这么长时间?

python - 计数时合并行 - Django/SQL

python - 按元素乘以稀疏向量

python - 发出请求时,x-auth-token 未在 header 中传递

python - 如何计算多维数组中的 N 个最大元素?

python - Django 的 CreateView 没有保存对象

javascript - 如何将javascript变量传递给django自定义过滤器