form_valid()
用于CreateView
并UpdateView
保存表单的方法,然后将其重定向到成功URL。这是不可能的return super()
,因为你想在要保存的对象和重定向之间进行操作。
第一种选择是不调用super()
,并在视图中复制两行。这样做的好处是非常清楚发生了什么。
def form_valid(self, form):
self.object = form.save()
# do something with self.object
# remember the import: from django.http import HttpResponseRedirect
return HttpResponseRedirect(self.get_success_url())
第二种选择是继续调用super()
,但是直到你更新了关系后才返回响应。这样做的好处是你没有在中复制代码super()
,但是缺点是除非你熟悉所super()
执行的操作,否则不清楚正在发生的事情。
def form_valid(self, form):
response = super(CourseCreate, self).form_valid(form)
# do something with self.object
return response