FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. : ) |
#2
|
||||
|
||||
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] |
#3
|
||||
|
||||
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}) |
#4
|
|||
|
|||
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 : ) |
#5
|
||||
|
||||
Por supuesto, si no se estaba llamando la función save() de la instancia! Se nos escapó ese gran detalle
Saludos! |
#6
|
|||
|
|||
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}) |
|
|
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 |
|