# Multiple ModelForms on One Page

**URL:** <https://forum.djangoproject.com/t/multiple-modelforms-on-one-page/13421>\
**Category:** Templates & Frontend\
**Created:** [April 28, 2022, 10:05am UTC](https://forum.djangoproject.com/t/multiple-modelforms-on-one-page/13421 "2022-04-28T10:05:08Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![onyeibo](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/onyeibo/32/11494_2.png) [@onyeibo](https://forum.djangoproject.com/u/onyeibo)\
**Post date:** [April 28, 2022, 10:05am UTC](https://forum.djangoproject.com/t/multiple-modelforms-on-one-page/13421/1 "2022-04-28T10:05:08Z")

</div>

Hi,

I am trying to create a dynamic page that presents/updates multiple ModelForms using Class-based-views. I have created single pages that modify the Model objects separately. However, what I really want to do is to have them all on one page like so:

 ![which-modelview](https://us1.discourse-cdn.com/flex026/uploads/djangoproject/original/2X/a/af43a2808937974b27358e151d385d83a9d2d98e.png)

I hope the sketch is self-explanatory. Users should be able to add/remove Shelves dynamically and the books likewise. Removing a shelf removes the child-objects (books). That is already possible via `on_delete=CASCADE` on database level.

So … does anyone have an idea of the best approach to this?

---

<div class="post-metadata">

**Author:** ![KenWhitesell](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/kenwhitesell/32/280_2.png) [@KenWhitesell](https://forum.djangoproject.com/u/KenWhitesell)\
**Post date:** [April 28, 2022, 11:34am UTC](https://forum.djangoproject.com/t/multiple-modelforms-on-one-page/13421/2 "2022-04-28T11:34:13Z")

</div>

That sort of dynamic page requires JavaScript to do the work in the browser.

If you’re working with multiple instances of the same form, you would use formsets in Django to initially prepare the page, and then the JavaScript in the browser to perform the modifications to the page after it has been rendered in the browser.

Note: The Django-provided generic Class Based Views are **not** going to be your friend here.
