# The model: from django.db import models from django.contrib.auth.models import User class UserProfile(models.Model): user = models.ForeignKey(User, unique=True, edit_inline=models.STACKED, num_in_admin=1, min_num_in_admin=1, max_num_in_admin=1, num_extra_on_change=0) company = models.CharField(blank=True,core=True, maxlength=128) address1 = models.CharField(blank=True,core=True, maxlength=128) address2 = models.CharField(blank=True,core=True, maxlength=128) city = models.CharField(blank=True,core=True, maxlength=128) state = models.ForeignKey(State) zip = models.CharField(blank=True,core=True, maxlength=10) phone = models.CharField(blank=True,maxlength=32) phone_ext = models.CharField(blank=True,maxlength=16) EMAIL_TYPE_CHOICES = (('text','Text'),('HTML','HTML')) emailType = models.CharField(maxlength=32,choices=EMAIL_TYPE_CHOICES) updated = models.DateTimeField(auto_now_add=True) # The view: from django.views.generic.create_update import * def update_profile_view(request): user_id = request.user.id try: profile = UserProfile.objects.get(pk=user_id) except UserProfile.DoesNotExist: # Create a new profile return create_object( request, model = UserProfile, #extra_context = { 'UserProfile': UserProfile._meta, }, login_required = True, post_save_redirect = '/home/', ) # Update existing profile return update_object( request, model = UserProfile, object_id = user_id, #extra_context = { 'UserProfile': UserProfile._meta, }, login_required = True, post_save_redirect = '/home/', )