Buenas, para trabajar con la clase profile deberías pensar en una vista de actualización y no de creación del profile. Para crear el profile, simplemente debes generar una nueva instancia cuando se ejecute la signal post_save de user, podría ser algo así:
@receiver(post_save, sender=User)def create_user_profile(sender, instance, created, **kwargs): if created: Profile.objects.create(user=instance)@receiver(post_save, sender=User)def save_user_profile(sender, instance, **kwargs): instance.profile.save()
En cuanto a vista de actualización la generaré a partir de View, ya que la solución a este tipo de problemas se visualiza mejor:
class ProfileView(View): def get(self, request): user_form = UserForm(instance=request.user) profile_form = UserProfileForm(instance=request.user.profile) return render(request, 'profiles/profile.html', {'user_form': user_form,'profile_form': profile_form }) def post(self, request): user_form = UserForm(request.POST, instance=request.user) profile_form = UserProfileForm(request.POST, instance=request.user.profile) if user_form.is_valid() and profile_form.is_valid(): user_form.save() profile_form.save() messages.success(request, _('Your profile was successfully updated!')) return redirect('settings:profile') messages.error(request, _('Please correct the error below.'))
Espero que te haya servido de ayuda, en el siguiente enlace te dejo más información sobre como extender los usuarios de Django.
Saludos.