Forms in popups

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,
        ...
        })