在Django中,如何使用dict中的值动态更新多个对象

时间:2019-05-02 01:21:34

标签: python django django-models

我有两个模型model1model2model1都有一个字段,该字段是指向model2的外键。另外,我有一个model1_model2_dict,键为model1.id,值为model2.id。现在,我尝试使用model1.model2_id批量更新model1_model2_dict字段。

我尝试过这样

model1.objects.filter(model2_id=None).update(model2_id=model1_model2_dict.get(F('id'), None))

此语句导致了我期望的更新计数,但实际上并未使用model2_id更新,而是使用None更新。对如何使这项工作有帮助吗?

1 个答案:

答案 0 :(得分:0)

  

批量更新() Django-2.2 中引入。

因此,要使用bulk_update,您需要在Django >= 2.2上直接使用它。

model1.objects.filter(model2_id=None).update(model2_id=model1_model2_dict.get(F('id'), None))
  

解决方案:

  1. 在使用Django-1.11时,请考虑升级到 Django-2.2
  2. 编写一个 for循环,然后对其他每个对象进行一次更新。