Django Admin select fields anidados

1,036 views
Skip to first unread message

Jonathan G Linenberg

unread,
Apr 5, 2012, 9:52:42 AM4/5/12
to djan...@googlegroups.com
>> print "Hola Gente! Como andan?"
>> exit()

Bueno mi pregunta es la siguiente tengo 4 clases para provincias, partidos, localidades y códigos postales. Estos son los datos para toda la Argentina, y quería anidar los select de los Foreign Key para que se vallan filtrando la informacion a medida que van haciendo las selecciones.

Hasta ahora con JQuery logre que una vez que cargan todos los select fields se borre la info de 3 de ellos. Pero eso no quita la perdida de tiempo inicial que tiene cuando consulta la db para llenar esa información. Así que mi pregunta es: ¿Como puedo hacer para que los select fields de partidos, localidades y códigos postales no sean buscados en la db? Dado que quiero que a medida que se seleccione una provincia los otros datos vayan siendo llenados por JQuery por medio de consultas con JSON.

Gracias y un abrazo grande!
--
Jonathan G. Linenberg
Linux User # 521828

Eduard Diaz

unread,
Apr 8, 2012, 1:01:26 PM4/8/12
to djan...@googlegroups.com
Hola,

En principio tendria que ser muy sencillo y es mas un tema jQuery que Django.

Si tienes provincias, partidos, localidades y codigos postales, lo primero es hacer un un archivo llamado "provincias.json" que mostrarias tal cual en el primer tag "<select>". Hacer esto tiene que ser muy facil, sino será complicado hacer los otros pasos

Mendiante jQuery y el método "change" asociado al primer tag "<select>" ( $('#id_provincias').change() ) cargas mediante ajax el archivo de los partidos de la provincia que estaran en un archivo llamado "idprovincia_partidos.json" y así con el resto.

Es decir se han de crear los archivos:

provincias.json
para cada provincia un archivo llamado idprovincia_partidos.json
para cada partido un archivo llamado idprovincia_idpartido_localidades.json
para cada localidad un archivo llamado idprovincia_idpartido_idlocalidad_codigos_postales.json

Ahora solo tienes que crear un sistema que genere esos archivos desde django, para eso tienes varias opciones ya sea al guardar una modificación de esos datos, mediante un custom command del django-admin[1] o mediante el comando dumpdata --format json [2]

[1] https://docs.djangoproject.com/en/dev/howto/custom-management-commands/
[2] https://docs.djangoproject.com/en/1.4/ref/django-admin/#django-admin-dumpdata

Un saludo


--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.




Temo

unread,
Apr 9, 2012, 10:30:55 AM4/9/12
to djan...@googlegroups.com
En el formulario en el campo en vez de Partido.objects,all()  pones Partido.objects.none(), con eso evitas las consultas y ya con jquery vas cargando el resto con los combos dependientes.

saludos

Jonathan G Linenberg

unread,
Apr 9, 2012, 12:18:45 PM4/9/12
to djan...@googlegroups.com

--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.

Hola lo intentaba hacer desde el django admin, pero lo solucione desde los models asi:

province = models.ForeignKey(Province, verbose_name=_('province'), limit_choices_to = {'pk__exact': 0})

siendo pk=0 una referencia 'vacia' osea que no devuelve ningun resultado.
Reply all
Reply to author
Forward
0 new messages