Cómo hago para que el usuario logueado se guarde como clave foránea en la tabla de otra entidad???

384 views
Skip to first unread message

Lucho Flores

unread,
Feb 21, 2013, 6:28:27 PM2/21/13
to djan...@googlegroups.com
Cómo están amigos, estoy haciendo una agenda electrónica y estoy modelando mi clase Dirección. Esta clase tiene como clave foránea al User. Ahora bien, yo no quiero que se me desplegue un combobox con todos los usuarios, sino mas bien deseo que automáticamente me grabe como clave foránea al usuario que está logueado. Estoy haciendo algo como esto, sin éxito: 

if request.method=='POST':
form = DireccionForm(request.POST)

if form.is_valid():
usuario = request.user
ciudad = form.cleaned_data['ciudad']
calle = form.cleaned_data['calle']
numcasa = form.cleaned_data['numeroCasa']
codigo = form.cleaned_data['codigoPostal']


direccion = Direccion()
direccion.usuario = usuario
direccion.ciudad = ciudad
direccion.calle = calle
direccion.numeroCasa = numcasa
direccion.codigoPostal = codigo
direccion.save()
return HttpResponseRedirect('/direccion')
else:
form = DireccionForm()

Charly Román

unread,
Feb 21, 2013, 6:46:11 PM2/21/13
to djan...@googlegroups.com
Si no quieres que aparezca el campo tienes que hacer un exclude en tu
form: https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#using-a-subset-of-fields-on-the-form

Saludos:!



El día 21 de febrero de 2013 17:28, Lucho Flores
<luchito...@gmail.com> escribió:
> --
> --
> Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del
> Framework Django de habla hispana" de Grupos de Google.
> Si quieres publicar en este grupo, envía un mensaje de correo
> electrónico a djan...@googlegroups.com
> Para anular la suscripción a este grupo, envíe un mensaje a
> django-es-...@googlegroups.com
> Para obtener más opciones, visita este grupo en
> http://groups.google.com.bo/group/django-es.
> ---
> Has recibido este mensaje porque estás suscrito al grupo "Django-es" de
> Grupos de Google.
> Para anular la suscripción a este grupo y dejar de recibir sus correos
> electrónicos, envía un correo electrónico a
> django-es+...@googlegroups.com.
> Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
>
>

Lucho Flores

unread,
Feb 21, 2013, 7:12:12 PM2/21/13
to djan...@googlegroups.com
Muchas gracias Charly por el link, en verdad, lo apliqué y encontré mi respuesta. Aquí adjunto lo que hice:


Mi formulario en forms.py

class DireccionForm(ModelForm):
class Meta:
model = Direccion
exclude = ('usuario',)


Mi función: en views.py

def add_direccion_view(request):
context_instance= RequestContext(request)

if request.method=='POST':
usuario = Direccion(usuario=request.user)
form = DireccionForm(request.POST, instance=usuario)

if form.is_valid():
form.save()
return HttpResponseRedirect('/direccion')
else:
form = DireccionForm()
ctx = {'form':form}
return render_to_response('agenda/adddireccion.html',ctx, context_instance)
Reply all
Reply to author
Forward
0 new messages