Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Python (https://www.clubdelphi.com/foros/forumdisplay.php?f=46)
-   -   problemas al modificar datos (https://www.clubdelphi.com/foros/showthread.php?t=77872)

Gregoqm 02-03-2012 14:37:55

problemas al modificar datos
 
Hola de nuevo, ahi va mi problemilla tengo un usuario q tiene varios viajes que ha creado el, y cada viaje creado tiene le opcion de modificar los datos introducidos,
esto lo hago con la vista modificarviaje, lo que pasa es q cuando le doy a la opcion de modificar del viaje me sale el formulario pero con los datos de otro viaje, y da igual
al viaje que le de, que el formulario me sale relleno con los mismos datos siempre, es q no se q poner en el for o hacerlo sin for. Muchas gracias. Un saludo.

Código:


def modificarviaje(request, pID='0'):
       
        f=ViajeForm()
        message=''
        p = get_object_or_404(RegistroUsuario, pk=pID)
        viajes=Viaje.objects.filter(usuarioViaje=p)
        for v in viajes:
         
            #¿?¿?¿?¿???¿¿?¿?¿?¿?¿

          if request.method == 'GET':
                f = ViajeForm(instance=v)
                message = 'Ahora puedes modificar tu viaje %s ' % p.username
          if request.method == 'POST':
                if request.POST['submit'] == 'Actualizar':
                    message = 'Tu viaje se ha actualizado %s.' % p.username
                    f = ViajeForm(request.POST.copy(), instance=v)       
                    if f.is_valid():
                        try:
                            f.save()
                            message += '  OK'
                            return HttpResponseRedirect('/crearviaje/%d/' % p.id)
                        except:
                            message = 'Error al actualizar'
                    else:
                        message += ' Invalido'
       
        return render_to_response('modificar_viaje.html',{'p':p,'cForm':f,'message': message,'v':v})




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)


TiammatMX 02-03-2012 15:28:30

Cita:

Empezado por Gregoqm (Mensaje 426673)
Hola de nuevo, ahi va mi problemilla tengo un usuario q tiene varios viajes que ha creado el, y cada viaje creado tiene le opcion de modificar los datos introducidos,
esto lo hago con la vista modificarviaje, lo que pasa es q cuando le doy a la opcion de modificar del viaje me sale el formulario pero con los datos de otro viaje, y da igual
al viaje que le de, que el formulario me sale relleno con los mismos datos siempre, es q no se q poner en el for o hacerlo sin for. Muchas gracias. Un saludo.
...

Pues verás, no sé mucho de Python, pero lo que te puedo sugerir es algo que yo tengo bien controlado en Delphi. El proceso es así:
  • Creo la forma que voy a mostrar al usuario.
  • Si se trata de una inserción, dejo los datos en blanco para que el usuario haga con ellos lo que quiera.
  • Si se trata de una actualización (o modificación o cambio o como quieras llamarla) lleno CADA UNO DE LOS COMPONENTES DE DATOS con los datos actuales del registro donde fue llamada la funcionalidad.
  • Al regresar de la pantalla, antes de destruirla, guardo inmediatamente los datos.
Espero que te de una idea respecto a cómo poder solucionar tu problema.


La franja horaria es GMT +2. Ahora son las 23:19:19.

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