Django QuerySet.update
不处理transaction.commit_manually
,并自动提交。
我构建了一个像这样的自定义django视图......
@method_decorator(transaction.commit_manually)
def post(self, request, *args, **kwargs):
try:
Model.objects.all().update(rank=10)
data_to_update = resquest.
for d in data_to_update:
model = Model.objects.get(pk=d['id'])
model.rank = d['rank']
model.save()
transaction.commit()
status_code = 200
except Exception, e:
# do some stuff
transaction.rollback()
status_code = 500
return HttpResponse(content='Foo', status=status_code)
......如果在Model.objects.all().update(rank=10)
之后提出任何预期,
transaction.rollback()
无法正常工作,所有模型我都会将等级设置为10
我不知道为什么会发生这种情况,我无法通过所有模型进行迭代并为每个模型调用save方法(性能原因)。