En Django Crear y Editar, user y perfil a la vez

979 views
Skip to first unread message

raul urzua

unread,
Nov 16, 2014, 12:13:56 AM11/16/14
to djan...@googlegroups.com
en model.py
class Perfil(models.Model): user = models.OneToOneField(User, unique=True, related_name='perfil') telefono = models.PositiveIntegerField() direccion = models.TextField()

en form.py
from models import Perfil from django.contrib.auth.models import User class UserForm(forms.ModelForm): class Meta: model = User fields = ('username', 'first_name', 'last_name', 'email') class PerfilForm(forms.ModelForm): class Meta: model = Perfil

en view.py
def crear_perfil(request): if request.method == 'POST': # formulario enviado perfil_form = PerfilForm(request.POST) if user_form.is_valid(): # formulario validado correctamente perfil_form.save() return HttpResponseRedirect('/') else: # formulario inicial user_form = UserForm() return render_to_response('editar_perfil.html', {'perfil_form': perfil_form }, context_instance=RequestContext(request))

def editar_perfil(request): if request.method == 'POST': # formulario enviado perfil_form = PerfilForm(request.POST, instance=request.user.perfil) if user_form.is_valid(): # formulario validado correctamente perfil_form.save() return HttpResponseRedirect('/') else: # formulario inicial user_form = UserForm(instance=request.user) return render_to_response('editar_perfil.html', {'perfil_form': perfil_form }, context_instance=RequestContext(request))

Cuando inicio sesion, quiero crear y editar el perfil a la vez
o sea que cuando quiera creae el perfil no aparezca nada como predeterminado


en index.html
En el boton crear
<a href="/crear_perfil/{{user.id}}" data-role="button">crear</a>
deberia aparecer crear , si no lo e creado anteriormente

<a href="/editar_perfil/{{user.id}}" data-role="button">Editar</a>
deberia aparecer editar si he creado anteriormente el perfil

como lo hago para cambiar boton crear a editar, si es que fue creado anteriormente??????

Eduard Diaz

unread,
Nov 18, 2014, 12:52:31 PM11/18/14
to djan...@googlegroups.com
Puedes hacerlo de varias maneras una es comprobando en la vista que el user tenga el perfil y enviando la variable al contexto

En la vista:

has_perfil = False
if Perfil.objects.filter(user=request.user):
    has_perfil = True

en el render_to_response {'perfil_form': perfil_form, 'has_perfil': has_perfil}
En el template:
{% if has_perfil %}
<a href="/editar_perfil/{{user.id}}" data-role="button">editar</a>
{% else %}

<a href="/crear_perfil/{{user.id}}" data-role="button">crear</a>
{% endif %}
Reply all
Reply to author
Forward
0 new messages