我有一个循环遍历对象并将其添加到列表中
for note in notes:
old_note = Note(
user_id=note['id']),
author=note['author'],
)
existing_notes.append(old_note)
Worklog.objects.bulk_update(
existing_notes,
[
'user_id',
'author',
],
batch_size=1000)
但是它没有按照我希望的那样工作。当我在django中用芹菜任务运行脚本时,有点崩溃。请帮帮我,如果有能力表明我的错误。 我的最终目标是将我需要的所有对象添加到列表中,并立即在数据库中更新它们,因为我确实有很多数据
答案 0 :(得分:0)
如果要创建新对象,则应使用bulk_create
而不是bulk_update
。
bulk_update
将尝试查找和更新现有对象,但是当您通过实例化其类来创建对象时,就像使用Note(...)
一样,它尚未保存到数据库中。因此,这就是您遇到错误的原因。
此外,您正在使用冲突的模型。您创建了Notes
的列表,但是尝试通过Worklog
更新它们。
两者都使用Note
或Worklog
。
您更新的代码应如下所示:
for note in notes:
old_note = Note(
user_id=note['id']),
author=note['author'],
)
existing_notes.append(old_note)
Note.objects.bulk_create(
existing_notes,
batch_size=1000)