擅长:python、mysql、java
<p>用于<code>CreateView</code>和<code>UpdateView</code>的<a href="https://github.com/django/django/blob/feac4c30ce7635e17ce1adc4c2c7a1eb0721aeb3/django/views/generic/edit.py#L189">^{<cd1>}</a>方法保存表单,然后重定向到成功url。不可能执行<code>return super()</code>,因为您希望在保存的对象和重定向之间执行操作。</p>
<p>第一个选项是不调用<code>super()</code>,并在视图中复制这两行。这样做的好处是很清楚发生了什么。</p>
<pre><code>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())
</code></pre>
<p>第二个选项是继续调用<code>super()</code>,但在更新关系之前不要返回响应。这样做的好处是您不会在<code>super()</code>中复制代码,但缺点是它不太清楚发生了什么,除非您熟悉<code>super()</code>的功能。</p>
<pre><code>def form_valid(self, form):
response = super(CourseCreate, self).form_valid(form)
# do something with self.object
return response
</code></pre>