Does anyone know of or can anyone please produce a simple example of Django's class-based generic DeleteView? I want to subclass DeleteView and ensure that the currently logged-in user has ownership of the object before it's deleted. Any help would be very much appreciated. Thank you in advance.
Here's a simple one:
from django.views.generic import DeleteView
from django.http import Http404
class MyDeleteView(DeleteView):
def get_object(self, queryset=None):
""" Hook to ensure object is owned by request.user. """
obj = super(MyDeleteView, self).get_object()
if not obj.owner == self.request.user:
raise Http404
return obj
Caveats:
DeleteView
won't delete on GET
requests; this is your opportunity to provide a confirmation template (you can provide the name in the template_name
class attribute) with a "Yes I'm sure" button which POST
s to this viewdelete
method instead, check permissions after the get_object
call and return a customised response.success_url
class attribute so that the user can confirm that the object has been deleted.