title: Django having trouble linking a UserProfile to User
body: <p>So im wanting to extend the django auth.User model to add extra fields. Ive read a few articles here and there, and am almost there.</p>
  
  <p>Im just trying to make the signup form at the moment. So a new user can sign up. I can get the new User created but when I come to save the UserProfile object to the database it fails citing</p>
  
  <pre><code>Cannot assign "u'clare'": "Customer.user" must be a "User" instance.
  </code></pre>
  
  <p>where "clare" is the username ive put in. This user is created in Auth.User, but the UserProfile, in this case called Customer is not created. So I think im doing something wrong when creating the object and using the foreign key to do so. Anyway below are the relevant files.</p>
  
  <p>models.py</p>
  
  <pre><code>from django.db import models
  from RadioBusiSite.music.models import PlayList
  from django.contrib.auth import authenticate
  from django.contrib.auth.models import User
  from django import forms
  
  class Location(models.Model):
      Address = models.CharField(max_length=300)
      PhoneNumber = models.CharField(max_length=15)
      Size = models.IntegerField('Size of Premises')
  
      def __unicode__(self):
          return self.Address
  
  class Customer(models.Model):
      user = models.ForeignKey(User, unique=True)
      Company = models.CharField(max_length=200)
      ContactPerson = models.CharField('Contact Person', max_length=200)
      email = models.CharField(max_length=200)
      ABN = models.CharField(max_length=50)
      Location = models.ForeignKey(Location)
      Playlist = models.ManyToManyField(PlayList)
  
      def __unicode__(self):
          return self.Company
  </code></pre>
  
  <p>forms.py</p>
  
  <pre><code>from django.contrib.auth import authenticate
  from django.contrib.auth.models import User
  from django import forms
  from RadioBusiSite.customer.models import Customer
  from django.forms.models import modelformset_factory
  
  class CustomerForm(forms.Form):
      user = forms.CharField(max_length=30, label='User Name')
      password1 = forms.CharField(max_length=30, label='Password', widget=forms.PasswordInput(render_value=False))
      password2 = forms.CharField(max_length=30, label=' Check Password', widget=forms.PasswordInput(render_value=False))
      Company = forms.CharField(max_length=200)
      ContactPerson = forms.CharField(max_length=200)
      email = forms.EmailField()
      ABN = forms.CharField(max_length=50)
      #Location = forms.ForeignKey(Location)
      #Playlist = forms.ManyToManyField(PlayList)
  
      def clean(self):
          if 'password1' in self.cleaned_data and 'password2' in self.cleaned_data:
              if self.cleaned_data['password1'] != self.cleaned_data['password2']:
                  raise forms.ValidationError("You must type the same password each time")
          return self.cleaned_data
  
      def clean_user(self):
          try:
              User.objects.get(username=self.cleaned_data['user'])
          except User.DoesNotExist:
              return self.cleaned_data['user']
          raise forms.ValidationError("This user is already in use. Please Choose another one.")
  
      def save(self):
          new_user = User.objects.create_user(username = self.cleaned_data['user'],
                                              email = self.cleaned_data['email'],
                                              password = self.cleaned_data['password1'])
          new_customer = Customer.objects.create(user=self.cleaned_data['user'],
                                                 company = self.cleaned_data['Company'],
                                                 ContactPerson = self.cleaned_data['ContactPerson'],
                                                 email = self.cleaned_data['email'],
                                                 ABN = self.cleaned_data['ABN'])
  </code></pre>
  
  <p>views.py</p>
  
  <pre><code>from django.shortcuts import render_to_response
  from django.http import HttpResponse, HttpResponseRedirect
  from RadioBusiSite.customer.models import Customer,Location
  from RadioBusiSite.customer.forms import CustomerForm
  from django.contrib.auth import authenticate
  from django.contrib.auth.models import User
  
  def addCustomer(request):
      if request.method == 'POST':
          #user = UserForm(request.POST, instance=request.user)
          form = CustomerForm(request.POST)
          if form.is_valid():
              form.save()
              return HttpResponseRedirect('/home/')
      else:
          form = CustomerForm()
  
      return render_to_response('addCustomer.html', {
          'form': form,
      })
  </code></pre>
  
  <p>And ive enabled the AUTH think like so</p>
  
  <p>AUTH_PROFILE_MODULE = 'customer.Customer'</p>
  
  <p>the file above are all in a folder called "customer"</p>
  
  <p>Any help would be great.</p>
  
  <p>Cheers
  Mark</p>