<p>您可以尝试以下方法:</p>
<pre><code>from django.views.generic import TemplateView
class RiskView(TemplateView):
template_name = 'formulare/RiskAssessment/risk.html'
risk = None
RiskLineSet = None
def dispatch(self, request, *args, **kwargs):
if self.kwargs.get('pk', None) is None:
return HttpResponseRedirect('/fm/riskassessment/') # No pk show list
else:
self.risk = RiskAssessment.objects.get(id=pk)
self.RiskLineSet = inlineformset_factory(RiskAssessment, RiskLine, can_delete=False, exclude=('user',))
return super(RiskView, self).dispatch(self, request, *args, **kwargs)
def get_context_data(self, **kwargs):
context = super(RiskView, self).get_context_data(**kwargs)
context['riskform'] = RiskForm(instance=self.risk)
context['risklineset'] = self.RiskLineSet(instance=self.risk)
return context
def post(self, request, *args, **kwargs):
riskform = RiskForm(request.POST, instance=self.risk)
risklineset = self.RiskLineSet(request.POST, request.FILES, instance=self.risk)
if riskform.is_valid() and risklineset.is_valid():
riskform.save()
risklineset.save()
# Redirect to somewhere
if '_save' in request.POST:
return HttpResponseRedirect('/fm/riskassessmentlist/')
if '_addanother' in request.POST:
return HttpResponseRedirect('/fm/riskassessmentnew/')
# Otherwise, I guess you want to redirect to the same view
return HttpResponseRedirect('url_of_the_current_view')
</code></pre>