# models.py class Project(models.Model): title = models.CharField(max_length=50) created_on = models.DateTimeField(auto_now_add=True) description = models.TextField(max_length=5000) def __unicode__(self): return self.title class Admin: pass # forms.py from pm.models import Project from django import newforms as forms class ProjectForm(forms.ModelForm): class Meta: model=Project # views.py from django.contrib.auth.decorators import permission_required from django.core.urlresolvers import reverse from django.http import HttpResponseRedirect from django.shortcuts import render_to_response from pm.forms import ProjectForm @permission_required('pm.add_project') def project_add(request): project = Project() if request.POST: form = ProjectForm(data=request.POST, instance=project) if form.is_valid(): form.save() return HttpResponseRedirect(reverse(project_detail, args=(project.id,))) else: request.user.message_set.create(message='Please check your data.') else: form = ProjectForm(instance=project) context = section(request, 'projects') context['form'] = form return render_to_response('templates/pm/project_add.html', RequestContext(request, context))