有条件的通用 deleteview

Generic deleteview with condition

我一直在尝试创建 Django 通用 deleteview,以删除模型的实例。

但是我必须检查是否允许删除此项目。这是使用模型中定义的方法完成的。

到目前为止,我已经创建了这个:

@login_required
def delete_employee(request, pk):

    employee = None
    try:
        employee = Employee.objects.get(pk=pk)
    except:
        pass

    if employee and not employee.empty():
        return render(request, "error.html", None)
    else:
        # Load the generic view here.

这样走合适吗?我怎样才能在那里加载通用视图? 我试过 EmployeeDelete.as_view() 之类的东西,但这些东西不起作用。

或者有没有办法在通用视图中检查它? 我也试过了,但我无法加载错误页面,只是抛出错误。

要使用 DeleteView 执行此操作,您只需覆盖继承视图上的 delete 方法即可。这是一个基于你所说的例子。这只是您如何完成它的示例。您可能需要根据具体情况对其进行调整,特别是 can_delete

上的其他情况
class EmployeeDeleteView(DeleteView):
    success_url = reverse_lazy('index')

    def delete(self, request, *args, **kwargs):
        self.object = self.get_object()
        can_delete = self.object.can_delete()

        if can_delete:
            return super(EmployeeDeleteView, self).delete(
                request, *args, **kwargs)
        else:
            raise Http404("Object you are looking for doesn't exist")