Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Python
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-02-2012
Gregoqm Gregoqm is offline
Registrado
NULL
 
Registrado: feb 2012
Posts: 6
Poder: 0
Gregoqm Va por buen camino
poner un campo con valor fijo en un formulario al rellenarlo

Hola a todos¡¡¡tengo los siguientes modelos en mi aplicacion:

models.py:

class RegistroUsuario(User):

comentario=models.TextField(blank=True)
imagen=models.ImageField(upload_to='usuarios/',blank=True)
coche=models.CharField(max_length=2,choices=SINO_CHOICES)
animales=models.CharField(max_length=2,choices=SINO_CHOICES)
fumador=models.CharField(max_length=2,choices=SINO_CHOICES)
musica=models.CharField(max_length=2,choices=SINO_CHOICES)
conversacion=models.CharField(max_length=2,choices=SINO_CHOICES)

class Viaje(models.Model):
usuarioViaje=models.ForeignKey(RegistroUsuario, related_name='+')
origen=models.CharField(max_length=50)
destino=models.CharField(max_length=50)
fechaPublicacion=models.DateField(auto_now_add=True)
fechaViaje=models.DateTimeField()
comentarios=models.TextField()
ofedem=models.CharField(max_length=3,choices=OFDEM_CHOICES)
idavue=models.CharField(max_length=3,choices=IDAVUE_CHOICES)
plazasLibres=models.BooleanField()
precio=models.PositiveSmallIntegerField()
equipaje=models.CharField(max_length=3,choices=EQUIPAJE_CHOICES)

Y una vez que hago loggin en mi aplicación con un usuario quiero que
el campo usuarioViaje del modelo Viaje al rellenar el formulario sea
el mismo que el correspondiente a RegistroUsuario. Este es mi
formulario:

@login_required
def creaViajeForm(request, pID='0'):
bf = ViajeForm()
message = ''
p = get_object_or_404(RegistroUsuario, pk=pID)
if request.method == 'GET':
message = 'Completa el formulario y crearas un nuevo viaje %s
' % p.username
if request.method == 'POST':
if request.POST['submit'] == 'Crear':
bf = ViajeForm(request.POST.copy())

if bf.is_valid():
try:
bf.save()
message = 'Nuevo viaje de %s' % p.username
return HttpResponseRedirect('/paginausuario/%d/' % p.id)
except:
message = 'Error en la base de datos'
else:
message = 'Datos invalidos'
return render_to_response(
'crear_viaje.html',
{'p','bForm':bf, 'message': message})


Lo que pasa a este formulario es q cuando lo voy a rellenar en el
campo usuarioViaje me sale un desplegable con todos los usuarios y lo
q yo quiero es que salga directamente el usuario correspondiente y que
no de la opción de elegir otro. Muchas gracias. Un saludo. : )
Responder Con Cita
  #2  
Antiguo 28-02-2012
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Tu código no se entiende. Recuerda que en Python la tabulación controla el flujo del programa.

Envuelve el código en una etiqueta [code]
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #3  
Antiguo 28-02-2012
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Creo que bastaría con simplemente asignar la variable ``usuarioViaje`` luego de "bf = ViajeForm(request.POST.copy())"

Código:
def creaViajeForm(request, pID='0'):
    bf = ViajeForm()
    message = ''
    p = get_object_or_404(RegistroUsuario, pk=pID)
    
    if request.method == 'GET':
        message = 'Completa el formulario y crearas un nuevo viaje %s' % p.username
    if request.method == 'POST':
        if request.POST['submit'] == 'Crear':
        bf = ViajeForm(request.POST.copy())
        bf.usuarioViaje = p

        if bf.is_valid():
        try:
            bf.save()
            message = 'Nuevo viaje de %s' % p.username
            return HttpResponseRedirect('/paginausuario/%d/' % p.id)
        except:
            message = 'Error en la base de datos'
        else:
            message = 'Datos invalidos'
    return render_to_response('crear_viaje.html',
                              {'p','bForm':bf, 'message': message})
Saludos!
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #4  
Antiguo 28-02-2012
Gregoqm Gregoqm is offline
Registrado
NULL
 
Registrado: feb 2012
Posts: 6
Poder: 0
Gregoqm Va por buen camino
Hola muchas gracias por la respuesta pero no me crea el viaje, me muestra el mensaje de except: .

Una solución que he podido hallar para que me guarde los viajes es:

Código:


@login_required
def creaViajeForm(request, pID='0'):
    
    message = ''
    p = get_object_or_404(RegistroUsuario, pk=pID)
    bf = ViajeForm()
    if request.method == 'GET':
        message = 'Completa el formulario y crearas un nuevo viaje %s ' % p.username
    if request.method == 'POST':
        if request.POST['submit'] == 'Crear':
            bf = ViajeForm(request.POST.copy())
            
            if bf.is_valid():
                try:
                    
		    v = bf.save(commit=False)
		    v.usuarioViaje = p
		    v.save()

                    message = 'Nuevo viaje de %s' % p.username
		    return HttpResponseRedirect('/paginausuario/%d/' % p.id)		
                except:
                    message = 'Error en la base de datos'
            else:
                message = 'Datos invalidos'
    return render_to_response(
        'crear_viaje.html',
         {'p':p,'bForm':bf, 'message': message})

Con estas modificaciones si me lo guarda bien : )
Responder Con Cita
  #5  
Antiguo 29-02-2012
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Por supuesto, si no se estaba llamando la función save() de la instancia! Se nos escapó ese gran detalle

Saludos!
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #6  
Antiguo 29-02-2012
Gregoqm Gregoqm is offline
Registrado
NULL
 
Registrado: feb 2012
Posts: 6
Poder: 0
Gregoqm Va por buen camino
jajajja se nos escapo jajajjaaj muchas gracias por tu respuesta Chris, eso si tengo otra dudilla haber si me puedes ayudar.


tengo el siguiente problema: tengo en la pagina del usuario un formulario rellenos con los valores del usuario en cuestión
para que pueda actualizarlos cuando quiera, lo que ocurre es q cuando hago los cambios y le doy al boton de actualizar, este no actualiza y me muestra
el mensaje de error except: message = 'Error al actualizar' por lo que no entra en el try: . ¿ A que puede ser debido esto?



Código:



models.py

class RegistroUsuario(User):
    
    comentario=models.TextField(blank=True)
    imagen=models.ImageField(upload_to='usuarios/',blank=True)
    coche=models.CharField(max_length=2,choices=SINO_CHOICES)
    animales=models.CharField(max_length=2,choices=SINO_CHOICES)
    fumador=models.CharField(max_length=2,choices=SINO_CHOICES)
    musica=models.CharField(max_length=2,choices=SINO_CHOICES)
    conversacion=models.CharField(max_length=2,choices=SINO_CHOICES)




  views.py

class RegistroUsuarioForm(ModelForm):
	class Meta:
		model=RegistroUsuario
		fields = ('first_name', 'last_name', 'email','comentario','imagen','coche','animales','fumador','musica','conversacion')





@login_required
def paginausuario(request, pID='0'):
	f=RegistroUsuarioForm()
	message='no request'
	p = get_object_or_404(RegistroUsuario, pk=pID)

	if request.method == 'GET':
	        f = RegistroUsuarioForm(instance=p)
	        message = 'Ahora puedes modificar tu perfil %s ' % p.username
        if request.method == 'POST':
	        if request.POST['submit'] == 'Actualizar':
	            message = 'Update Request for %s.' % p.username
	            PersonForm = RegistroUsuarioForm(instance=p)
	            f = RegistroUsuarioForm(request.POST.copy())
                    if f.is_valid():
	                try:
	                    f.save()
	                    message += 'Actualizado'
                        except:
 	                   message = 'Error al actualizar'
                    else:
	                message += ' Invalido'
        
	return render_to_response('pagina_usuario.html',{'p':p,'pForm':f,'message': message})
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Poner Imagen .png en formulario C++ Builder 6! Dariana C++ Builder 3 09-12-2010 23:18:40
poner valor de un campo a un DblookupComboBox eugeniosm Conexión con bases de datos 4 17-04-2008 22:06:14
Como poner un formulario invisible kurono Varios 6 27-11-2007 03:07:52
Valor de trackbar fijo pennylane OOP 2 06-07-2007 18:56:49
Poner al formulario estilo Windows XP LordVermiis Varios 9 26-06-2006 10:54:34


La franja horaria es GMT +2. Ahora son las 20:00:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi