相关疑难解决方法(0)

在django中使用raise异常更正transaction.rollback()的方法

我正在使用Django 1.7.1和python 2.7,我正在做一些需要在事务中的POST请求,实际上我正在使用@transaction.atomic()装饰器使整个函数在一个事务中.

据我所知,这个装饰器类似于commit_on_success并在引发数据库错误时进行回滚.

是否可以引发一个自定义异常,使事务回滚但不使用保存点?我想在回滚完成时返回一个HttpResponse,解释为什么事务没有完成.

我有这个.

@transaction.atomic()
def salida_de_almacen(request):
    if request.method == 'POST':
        try:
            folio = request.POST['folio'] #Folio de la orden
            epccoma = request.POST['epc'] #EPCs separados por coma
            if folio is None or epccoma is None:
                return HttpResponse('Datos Incompletos',status=400)
            detalles = ODetalle.objects.filter(orden__folio=folio)
            epcs = epccoma.replace(' ','').split(',')
            inventario = Inventario.objects.filter(epc__in=epcs)
            mal = '' # Items incompletos
            for d in detalles:
                for i in inventario:
                    if i.producto.item == d.producto.item:
                        d.cantidad_entregada+=i.cantidad                        
                        i.delete()
                if d.cantidad_entregada<d.cantidad_ordenada:
                    mal+='%s,' % d.producto.item
            if mal …
Run Code Online (Sandbox Code Playgroud)

python django transactions exception-handling

7
推荐指数
2
解决办法
1万
查看次数

标签 统计

django ×1

exception-handling ×1

python ×1

transactions ×1