Quantcast
Channel: Dos formularios en una sola vista Django - CreateView - Stack Overflow en español
Viewing all articles
Browse latest Browse all 3

Respuesta de miguelghz en Dos formularios en una sola vista Django - CreateView

$
0
0

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.


Viewing all articles
Browse latest Browse all 3

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>