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