我需要在我的Postgres数据库中更新大约1200万条记录(所以我需要高效地完成它)。
我正在使用Django。
我必须更新一个jsonfield列(extra_info
),并使用同一模型中不同的列(related_type_id
,它是一个整数)的值。
尝试使用update
命令完成。这似乎是最有效的方法。
例如:
Person.objects.all().update(extra_info={
"type": "Human",
"id": F('related_type_id')
})
这个错误是: "类型为F的对象不可被JSON序列化"。 我认为,F()应该会返回该列的值(应该是一个整数),而该值应该是可序列化的。 这可以实现吗?还是我尝试了错误的方法? 我不想用for循环迭代每个记录并使用
save()
更新,因为这将需要太长时间。有太多的记录。
type
更改为custom_type
,但是出现了相同的错误(我想看看是否保留了“type”,但没有任何区别)。 - scoValue
应该可以解决问题,更新链接:https://docs.djangoproject.com/en/4.0/ref/models/expressions/#value-expressions。如果你只传递一个字符串,它似乎会使用列的值,你可能不需要使用F
对象,只需使用字符串'related_type_id'
即可。 - Iain Shelvington