This code will generate a Form based on an already existing Model. In Django this is called ModelForm and is a useful feature if you want to quickly create a form that saves data into a database.

Create a model (database table): models.py

from django.db import models
class Regions(models.Model):
    region = models.CharField(max_length=50)
    ...
    def __unicode__(self):
        return self.region

Create a form from the model (ModelForm): forms.py

from ApplicationName.models import Regions
class AddRegionForm(forms.ModelForm):
    class Meta:
        model = Regions

Create a view that will use the form and model: views.py

def add_region(request):
    # if the form is submitted save the new item
    if request.method == 'POST':
        form = AddRegionForm(request.POST)
        if form.is_valid():
            # either you define the fields
            region = Regions(region=form.cleaned_data['region'])
            region.save()
            # or you just save the whole form
            region = form.save()
    # fetch all the regions from the table, ordered by name asc
    regions = Regions.objects.order_by('region')
    context = ({ 'regions': regions })
    # render the template
    return render(request, 'applicationname/regions.html', context)

References:
https://docs.djangoproject.com/en/dev/ref/forms/fields/
https://docs.djangoproject.com/en/dev/ref/request-response/
http://www.djangobook.com/en/2.0/chapter07.html

Leave a Reply

Your email address will not be published. Required fields are marked *