This solution work with any form of popup like modals, offcanvas, collapse ▼ and more.
Collapse example
Template (in our case fossils.html):
views.py: add the following code to our fossils view:
...
if request.method == "POST" and "fossil_delete" in request.POST:
fossil.delete()
messages.success(request, f"{fossil.fossil_name} deleted successfully")
if fossil.fossil_species:
return redirect('species-selected', pk=fossil.fossil_species.id)
else:
return redirect('homepage')
if request.method == "POST" and "fossil_update" in request.POST:
form_fossil_update = FormFossil(request.user, request.POST, request.FILES, instance=fossil)
if form_fossil_update.is_valid():
fossil = form_fossil_update.save(commit=False)
fossil.fossil_owner = request.user
fossil.save()
messages.success(request, f"{fossil.fossil_name} updated successfully")
return redirect('fossil-selected', pk=fossil.id)
else:
form_fossil_update = FormFossil(request.user, instance=fossil)
...
Add the form_fossil_update form to the context data:
return render(request, 'app_fossils/fossil.html', {
...
'form_fossil_update': form_fossil_update,
...
})