Foros del Web » Programando para Internet » Python »

Filtrar Selects de Foreign Key en Django

Estas en el tema de Filtrar Selects de Foreign Key en Django en el foro de Python en Foros del Web. Buenos Dias, tengo una pregunta, nuevo en Django, y hay cosas que no consigo resolver. A ver si pueden darme una guia. Django por defecto ...
  #1 (permalink)  
Antiguo 01/03/2011, 09:17
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 9 meses
Puntos: 16
Pregunta Filtrar Selects de Foreign Key en Django

Buenos Dias, tengo una pregunta, nuevo en Django, y hay cosas que no consigo resolver. A ver si pueden darme una guia. Django por defecto para los campos de clave foraneas de los formularios pone un campo select, Necesito filtrar este select para que me traiga solo los datos correspondientes a los ingresados en un campo de busqueda previo. No consigo como hacerlo. De antemano gracias....
  #2 (permalink)  
Antiguo 01/03/2011, 14:32
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Filtrar Selects de Foreign Key en Django

Te refieres algo parecido a esto?
  #3 (permalink)  
Antiguo 02/03/2011, 10:05
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 9 meses
Puntos: 16
Respuesta: Filtrar Selects de Foreign Key en Django

mmmm. si se parece a ese formfield_for_foreignkey, pero alli especifican que es en el Admin de django. :S y yo lo necesito en un formulario normal. Me explico. tengo un campo en el que el usuario ingresa una cedula a buscar, si la cedula existe. me envia a otro formulario en donde tengo el select y necesito filtrar ese select para ke solo me traiga la cedula ingresada, cm modo de seguridad y rapidez.
  #4 (permalink)  
Antiguo 02/03/2011, 10:05
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 9 meses
Puntos: 16
Respuesta: Filtrar Selects de Foreign Key en Django

mmmm. si se parece a ese formfield_for_foreignkey, pero alli especifican que es en el Admin de django. :S y yo lo necesito en un formulario normal. Me explico. tengo un campo en el que el usuario ingresa una cedula a buscar, si la cedula existe. me envia a otro formulario en donde tengo el select y necesito filtrar ese select para ke solo me traiga la cedula ingresada, cm modo de seguridad y rapidez.

Esa funcion tambien funciona para formularios normales???
  #5 (permalink)  
Antiguo 02/03/2011, 11:00
Avatar de jcarrascal  
Fecha de Ingreso: enero-2008
Mensajes: 87
Antigüedad: 16 años, 11 meses
Puntos: 6
Respuesta: Filtrar Selects de Foreign Key en Django

¿Estás usando ModelForm? Yo he hecho algo como esto:

Código:
class ProductForm(forms.ModelForm):
	def __init__(self, filter, *args, **kwargs):
		super(ProductForm, self).__init__(*args, **kwargs)
		self.fields['category'].query_set = Category.objects.filter(filter)

	class Meta:
		model = Product
Es decir, se cambia el query_set en el constructor pasando el filtro que quieras desde la vista:

Código:
from django.db.models import Q

def index(request, category_id)
	form = ProductForm(Q(category_id=category_id))
	...
  #6 (permalink)  
Antiguo 09/03/2011, 11:43
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 9 meses
Puntos: 16
Respuesta: Filtrar Selects de Foreign Key en Django

ok. muchas gracias, disculpa pero como comente anteriormente. soy nuevo en django. que es o para que se utiliza esa variable super?????
  #7 (permalink)  
Antiguo 09/03/2011, 11:47
Avatar de jcarrascal  
Fecha de Ingreso: enero-2008
Mensajes: 87
Antigüedad: 16 años, 11 meses
Puntos: 6
Respuesta: Filtrar Selects de Foreign Key en Django

super() es una función que regresa los métodos de la clase base (de la que estamos heredando). En este caso la estoy usando para llamar al constructor de forms.ModelForm y normalmente se le pasa la clase en la que uno está (ProductForm en este caso) y la instancia (self).
  #8 (permalink)  
Antiguo 09/03/2011, 13:28
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 9 meses
Puntos: 16
Respuesta: Filtrar Selects de Foreign Key en Django

ok. Gracias. pero sigo teniendo el mismo problema. realize los cambios, no me da error, pero tampoco me realiza el filtro. aqui esta el codigo:
Modelo:
Cita:
class Hijo(models.Model):
cedula = models.ForeignKey('Empleado',related_name='cedulaP adre', verbose_name='Representante')
Form:
Cita:
class IngHijos(ModelForm):
def __init__(self, filter, *args, **kwargs):
super(IngHijos, self).__init__(*args, **kwargs)
self.fields['cedula'].query_set = Empleado.objects.filter(filter)
class Meta:
model = Hijo
Vista:
Cita:
def buscar(request):
if formulario.is_valid():
if formulario.is_valid():
cedula = request.POST.get('cedula', '')
obj = Empleado.objects.filter(cedula=cedula)
id = obj[0].id
hijos = Hijo.objects.filter(cedula=id)
formHijos = IngHijos(Q(id=id))
  #9 (permalink)  
Antiguo 09/03/2011, 13:30
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 9 meses
Puntos: 16
Respuesta: Filtrar Selects de Foreign Key en Django

no se porq no tomo la identacion...... en la vista que pusiste de ejm. tu pasas el parametro de category_id, si yo intento pasar un segundo parametro en la vista me da este error :
Cita:
buscar() takes exactly 2 arguments (1 given)

Etiquetas: django, filtrar, key, selects, foreignkey
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 12:39.