Django:从字典列表中批量更新,无需构建整个查询集

kha*_*iuk 5 django django-models django-orm

我有一个包含字典的列表。就像是:

[{'id': 0, 'price': 20}, {'id': 1, 'price': 10}] # a few thousands of elements
Run Code Online (Sandbox Code Playgroud)

如何在不构建整个查询集的情况下更新相应的模型?

Wil*_*sem 11

开始,您可以使用.bulk_update(\xe2\x80\xa6)\xc2\xa0 [Django-doc]

\n
data = [{\'id\': 0, \'price\': 20}, {\'id\': 1, \'price\': 10}]\n\nMatch.objects.bulk_update([Match(**kv) for kv in data], [\'price\'])
Run Code Online (Sandbox Code Playgroud)\n

因此,我们在这里构造Match对象,然后将其传递给bulk_update构造更新查询。

\n

  • @kharandziuk:它不会进行任何查询,它会创建一个“Match”对象,因此它相当于“Match(id = 0,price = 20)”,它不是“免费”,但很可能不会最大的瓶颈。 (2认同)