如何在Django的管理命令中管理事务?

时间:2011-07-29 22:51:57

标签: python django django-admin

我只是想知道如何在django的管理命令中管理事务。承诺保存?致力于成功?我无法从官方文件中找到相关信息。

2 个答案:

答案 0 :(得分:0)

我不太确定,但是管理表单不会达到提交点,除非它们满足clean()要求。在那之后,我想一切都将被提交。对于admin中的默认表单,此行为应该足够了。但是,对于更复杂的表单,您可以创建自定义管理表单,我很确定您可以定义是否要在成功或保存时提交。

答案 1 :(得分:0)

除非您告知管理命令操作,否则它们不会包装在事务中。

通过将 output_transaction 属性设置为True,可以告诉 handle()方法被包装在事务中。来自docs

  

BaseCommand.output_transaction

     

布尔值,指示命令是否输出SQL语句;如果为True,则输出将自动用BEGIN包装;和COMMIT;。默认值为False。

要获得更多控制权,您可以随时自己发起交易:

...
def handle(self, *args, **options):
    with transaction.atomic():
        do_your_stuff()