Foros del Web » Programando para Internet » Python »

Pasar parametros al Model de django

Estas en el tema de Pasar parametros al Model de django en el foro de Python en Foros del Web. Buenas tardes. Tengo un formulario en django con unos campos de selects con clave foranea, pero me trae muchos registros y necesito limitar la cantidad ...
  #1 (permalink)  
Antiguo 26/04/2011, 12:39
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 1 mes
Puntos: 16
Exclamación Pasar parametros al Model de django

Buenas tardes. Tengo un formulario en django con unos campos de selects con clave foranea, pero me trae muchos registros y necesito limitar la cantidad a algo mas exacto con el limit_choices_to. pero necesito pasarle el parametro al models. y no se si se pueda, mi idea es filtrarlo por el nombre del usuario. pero no se como obtener el nombre del usuario en el model.py. si pueden ayudarme.... gracias..!!!!!
  #2 (permalink)  
Antiguo 27/04/2011, 07:57
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pasar parametros al Model de django

En principio deberías poder utilizar los métodos ya incluidos en el modelo para hacer este filtrado, será mejor que pongas el código para ver si tiene alguna sutileza particular.
  #3 (permalink)  
Antiguo 27/04/2011, 08:42
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 1 mes
Puntos: 16
Respuesta: Pasar parametros al Model de django

Ok. aqui va la parte del modelo que utilizo
Cita:
class Histmov(models.Model):
Local = models.ForeignKey('configuracion.Hospital', limit_choices_to={'usuario__username': 'nombreusuario', verbose_name ='Hospital')
........
La idea es que solo me muestre los locales asignados al usuario acual, y poniendo lueo del "limit_choices_to" el usuario directamente me funciona, pero no se como hacer para tomarlo del sistema para que funcione con todos los usuarios. como podria hacer? gracias
  #4 (permalink)  
Antiguo 28/04/2011, 20:16
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pasar parametros al Model de django

Creo que es una mala estructuración de tu modelo de datos.

Veo un objeto Local, un objeto Hospital, y objetos Usuario. No intentes relacionarlos con el limit_choices_to de esa forma, sino usando las relaciones que te provee el modelo de datos de Django.

Buscando limit_choices_to, encontré este par de páginas que quizás te sirva, en caso contrario por favor dinos el motivo por el que necesitás limitar las opciones:

http://stackoverflow.com/questions/1...s-to-user-user
http://collingrady.wordpress.com/200...cks-in-django/


saludos.
  #5 (permalink)  
Antiguo 02/05/2011, 08:21
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 1 mes
Puntos: 16
Respuesta: Pasar parametros al Model de django

Ok. No es que este mal estructurado el Modelo de datos. Es asi. Cada hospital Tiene un usuario Asignado y el usuario al iniciar sesion solo puede ver los hospitales que le correspondan. por eso es que deseo pasarle el usuario al models para que lo filtre. de todos modos gracias. voy a revisar la informacion que pasaste! gracias.
  #6 (permalink)  
Antiguo 03/05/2011, 09:20
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pasar parametros al Model de django

Creo que sería mejor agregar un campo al Usuario, de tipo "muchos a muchos" (many to many). Esto te permitiría acceder a los Hospitales a los que el Usuario está asignado.
Es solamente un campo más en tu modelo, que django transforma en una tabla que relaciona los dos tipos de objeto.

A eso me refería con "mala estructuración", aunque quizás no fui claro.


Saludos.
  #7 (permalink)  
Antiguo 04/05/2011, 12:10
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 1 mes
Puntos: 16
Respuesta: Pasar parametros al Model de django

bueno bien. gracias.

Etiquetas: django, parametros, pasar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:04.