我正在使用两个表来更改其中的一些数据,但我想避免使用
bulk_update
进行两次调用,如下所示:
queryset = MyModel.objects.all()
submodels_to_update = []
for instance in queryset:
instance.submodel = process()
instance.submodel.sub_property = some_random_data()
submodels_to_update.append(instance.submodel)
MyModel.objects.bulk_update(queryset, ['submodel'])
SubModel.objects.bulk_update(submodels_to_update, ['sub_property'])
我想做的是类似下面的事情:
MyModel.objects.bulk_update(queryset, ['submodel', 'submodel__sub_property'])
但是
bulk_update
似乎不支持使用ORM语法的related_fields。我的问题是,是否有办法同时在两个不同的表中实现bulk_update
。
如果答案是不可能的,我没有任何问题可以接受,只需分享相关链接,证明我在这里描述的方法不受支持。
如文件所示here
此方法有效地更新提供的模型实例上的给定字段,通常使用一个查询,并返回更新的对象数。
注意:
updates the given fields on the provided model instances
它只能更新提供的模型实例上的字段。正如@jerch 所指出的
方法立即应用,对更新的QuerySet的唯一限制是它只能更新模型主表中的列,而不能更新相关模型。“内部bulk_update使用update()
方法,那就是为什么限制。update