我正在一个简单的网站上工作,我可以在一个简单的数据库中注册隔离的信息系统,并使用ForeignKeys为每个系统分配硬盘。从数据库中删除系统时,我使用DeleteView。
在DeleteView中:要检查是否有与系统关联的硬盘,我使用自定义方法。如果未找到硬盘,则显示DeleteView表单。如果有,则显示相关硬盘的列表而不是表单,并带有指向每个硬盘的UpdateView的链接。
我希望能够点击其中一个硬盘的链接,在UpdateView中对其进行更改,然后重定向回DeleteView以“再次检查列表”。
这是我到目前为止(媒体=硬盘/存储媒体)
class MediaEdit(LoginRequiredMixin, SuccessMessageMixin, UpdateView):
model = Media
form_class = MediaForm
template_name = 'dsl/media/media_create-edit.html'
success_message = 'Media successfully changed!'
def get_success_url(self):
return reverse('dsl:media_edit', kwargs={'pk': self.get_object().id})
def get_context_data(self, **kwargs):
context = super(MediaEdit, self).get_context_data(**kwargs)
context['action'] = reverse('dsl:media_edit',
kwargs={'pk': self.get_object().id})
next_url = self.request.GET.get('next', 'None')
context['next_url'] = next_url
return context
我尝试在UpdateView表单中使用“next_url”变量:
{% if next_url %}
<form class="" action="{{ next_url }}" method="post">
{% else %}
<form class="" action="{{ action }}" method="post">
{% endif %}
如果我将UpdateView窗体更改为“GET”,则next_url按预期工作,但它不会保存我在UpdateView中所做的更改。如果我使用“POST”,它会保存我的更改,但会在DeleteView中抛出ProtectedError。
我该如何使用?