Django:CreateView中的transaction.atomic,form_valid()

时间:2018-11-09 10:56:47

标签: python django

在我的transaction.atomic中将form_valid的{​​{1}}设置为有意义吗?

CreateView

1 个答案:

答案 0 :(得分:1)

如果您的表单具有多对多字段,则事务装饰器将确保保存实例的查询和多对多字段在同一事务中运行。

如果您的表单没有多对多字段,那么将只有一个SQL查询来保存行,并且不需要进行事务处理。

顺便说一句,您的return语句重复了super().form_valid(form)的工作。您可以进行return super().form_valid(form),也可以明确地调用save()

@transaction.atomic
def form_valid(self, form):
    self.instance = form.save(commit=False)
    self.instance.event = self.request.event
    self.instance.save()
    self.instance.save_m2m()  # if you have m2m fields
    return HttpResponseRedirect(self.get_success_url())