如何在django.forms生成的表单中添加删除按钮?

6 投票
2 回答
8494 浏览
提问于 2025-04-16 12:46

如何在由 django.forms 生成的编辑表单中添加一个删除按钮(注意,这里不是指管理后台)?

在 (/app/model/<id>/delete/ 等等) 上添加一个删除视图其实很简单,但我想知道如何在生成的表单旁边添加一个“删除”按钮?

我是不是漏掉了什么简单的东西?

2 个回答

1

你可以使用像这样的通用形式

class DeletableModelForm(forms.ModelForm):
    """
    Model form that allows you to delete the object
    """
    delete = forms.BooleanField(
        initial=False,
        help_text=_('Check this to delete this object')
    )

    def save(self, commit=True):
        if self.cleaned_data['delete']:
            return self.instance.delete()
        return super(DeletableModelForm, self).save()

然后你可以把复选框的样式改成看起来像按钮的样子。不过,实际上用普通的按钮可能会更好,给它起个名字...

17

在模板中添加一个提交按钮,把它的名字设置为 'delete',然后在你的视图中检查这个按钮是否被点击:

if request.POST.get('delete'):
    obj.delete()

撰写回答