This means we get Person objects created with the correct name, rather
than the username at time of creation.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
         user.first_name = self.cleaned_data.get('first_name', '')
         user.last_name = self.cleaned_data.get('last_name', '')
         user.save()
+
+       # saving the userprofile causes the firstname/lastname to propagate
+       # to the person objects.
+       user.get_profile().save()
+
         return user
 
     def clean(self):
 
             person.save()
         else:
             for person in people:
-                 person.user = self.user
+                 person.link_to_user(self.user)
                  person.save()
 
     def __str__(self):