Search code examples
htmldjangodjango-views

Delete multiple objects in django


I need to select several objects to be deleted from my database in django using a webpage. There is no category to select from so I can't delete from all of them like that. Do I have to implement my own delete form and process it in django or does django have a way to already do this? As it's implemented in the admin interface.

Specifically, I need to select the objects to delete with a form on a webpage. And then process the data returned from the form in my views.py. Then loop through what's returned in the form deleting as it's looping through the data. But I wanted to know what is best practice for implementing this in django.


Solution

  • You can delete any QuerySet you'd like. For example, to delete all blog posts with some Post model

    Post.objects.all().delete()
    

    and to delete any Post with a future publication date

    Post.objects.filter(pub_date__gt=datetime.now()).delete()
    

    You do, however, need to come up with a way to narrow down your QuerySet. If you just want a view to delete a particular object, look into the delete generic view.

    EDIT:

    Sorry for the misunderstanding. I think the answer is somewhere between. To implement your own, combine ModelForms and generic views. Otherwise, look into 3rd party apps that provide similar functionality. In a related question, the recommendation was django-filter.