A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://www.geeksforgeeks.org/python/django-modelformsets/ below:

Django ModelFormSets - GeeksforGeeks

Django ModelFormSets

Last Updated : 24 May, 2025

Django ModelFormsets provide a powerful way to manage multiple model-based forms on a single page. They allow you to create, update, or delete multiple instances of a model at once, using a group of forms that correspond to the model's fields.

Think of ModelFormsets as a collection of forms linked to a Django mode, similar to a data grid where each form corresponds to a single model instance.

Example Model: GeeksModel

Let's start with a simple model named GeeksModel defined in models.py:

Python
from django.db import models

class GeeksModel(models.Model):
    title = models.CharField(max_length=200)
    description = models.TextField()

    def __str__(self):
        return self.title
Creating a ModelFormset

To create a formset for this model, use Django’s modelformset_factory function.

Python
from django.forms import modelformset_factory
from .models import GeeksModel

GeeksFormSet = modelformset_factory(GeeksModel, fields=['title', 'description'])
Using ModelFormsets in Views

In views.py, you can create a view to render and process the formset:

Python
from django.shortcuts import render
from django.forms import modelformset_factory
from .models import GeeksModel

def modelformset_view(request):
    GeeksFormSet = modelformset_factory(GeeksModel, fields=['title', 'description'], extra=3)
    
    if request.method == 'POST':
        formset = GeeksFormSet(request.POST)
        if formset.is_valid():
            formset.save()  # Saves all valid forms to the database
    else:
        formset = GeeksFormSet()
        
    return render(request, 'home.html', {'formset': formset})
Rendering ModelFormsets in Templates

In your template (home.html), render the formset like this:

html
<form method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    {{ formset.as_p }}
    <input type="submit" value="Submit">
</form>

We can check if the form is working or not by running development server using command:

python manage.py runserver

And then visit: http://localhost:8000/

Model Form

Hit submit and data will be saved in GeeksModel where server is running. One can use this data in any manner conveniently now.

Django Formset

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4