我只是想知道如何在django的管理命令中管理事务。承诺保存?致力于成功?我无法从官方文件中找到相关信息。
答案 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()