Django的。处理原子块中的错误。 TransactionManagementError

时间:2016-07-14 08:46:58

标签: python django

我希望在原子块中捕获并处理IntegrityError并继续执行我的代码。例如:

@transaction.atomic()
def parent_func():
    try:
        child_func()
        another_child_func()
    except Exception as e:
        self.stderr.write('Cannot save: %s' % str(e))
        transaction.rollback()
    else:
        transaction.commit()

def child_func():
    a = ClassA()
    try:
        a.save()
        return a
    except (IntegrityError, ValidationError) as e:
        self.stderr.write('Cannot save "%s": %s' % (a, str(e)))
        return None

def another_child_func():
    b = ClassB()
    b.save()
    return b

在我处理函数child_func中的异常后,我在函数another_child_func中捕获了异常。

以下是例外消息:

  

django.db.transaction.TransactionManagementError:发生错误   当前的交易。直到结束才能执行查询   '原子'块。

我想知道在原子块中处理异常的可能性是什么。

0 个答案:

没有答案