在UpdateView上获取删除按钮以进行重定向时出现问题

时间:2018-09-21 10:29:01

标签: python django django-forms

此处有Python和Django新手

我一直在尝试从Django获取到标准UpdateView表单上的删除按钮,然后如果按下该按钮而不是Submit按钮,则将该按钮重定向到DeleteView。我可以正常使用,但是我不确定如何在单击时重定向到相应的删除页面。

我希望我需要更改reverse_lazy('app:submission_delete')以便以某种方式包含id,但是我在这里有点迷失了,我的google fu也没有太大帮助。

views.py

class AssessmentUpdate(UpdateView):
    model = Submission
    fields = '__all__'
    success_url = reverse_lazy('app:index')

    def form_valid(self, request):
        if 'Delete' in self.request.POST:
            reverse_lazy('app:Submission_delete')
        else:
            self.object = request.save()
            return HttpResponseRedirect(self.get_success_url())

urls.py

app_name = 'app'
urlpatterns = [
    re_path(r'^$', views.index, name='index'),
    path('<int:submission_id>/', views.detail, name='detail'),
    path('<int:pk>/update/', views.AssessmentUpdate.as_view(), name='Submission_update'),
    path('<int:pk>/delete/', views.AssessmentDelete.as_view(), name='Submission_delete'),
]

1 个答案:

答案 0 :(得分:0)

如果网址需要args或kwargs:

reverse_lazy('app:Submission_delete', kwargs={'pk': object.pk})

其中object是要删除的对象。

替代地:

只需使用常规超级链接到删除页面。为此,请使用django的模板标签url

{% url 'app:Submission_delete' pk=object.pk %}

您仍然可以通过CSS像按钮一样设置链接的样式,因此用户甚至都不知道区别。