PDA

Ver la Versión Completa : problemas al modificar datos


Gregoqm
02-03-2012, 13:37:55
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.



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, 14:28:30
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.