手动Django提交不管理django QuerySet.update()?

时间:2012-12-13 21:13:31

标签: django transactions

Django QuerySet.update不处理transaction.commit_manually,并自动提交。

我构建了一个像这样的自定义django视图......

class Foo(查看)

@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方法(性能原因)。

0 个答案:

没有答案