Combos dependientes django + JQuery

1,217 views
Skip to first unread message

Jordi Marco (itecnopartner, slu)

unread,
Jul 24, 2011, 3:51:52 AM7/24/11
to djan...@googlegroups.com
Hola a tod@s

Alguien me puede ayudar ha hacer Combos dependientes django + JQuery.

Gracias

Javi

unread,
Jul 24, 2011, 7:51:33 AM7/24/11
to Django-es
Echa un vistazo a http://www.dajaxproject.com/ , es lo que necesitas

On 24 jul, 03:51, "Jordi Marco (itecnopartner, slu)"
<jordi.marco.s...@gmail.com> wrote:
> Hola a tod@s
>
> Alguien me puede ayudar ha hacer *Combos dependientes django* + *JQuery.*
> *
> *
> *Gracias*

Jordi Marco (itecnopartner, slu)

unread,
Jul 24, 2011, 2:38:18 PM7/24/11
to djan...@googlegroups.com
Gracias, por la aportacion,

Estoy mirando http://www.dajaxproject.com/, lo he instalado y al testear los ejemplos me da el siguiente error,

dajaxice_callback should be a function since dajaxice 0.2

Sabeis como solucionarlo.

Gracias


--
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.

Jordi Marco (itecnopartner, slu)

unread,
Jul 24, 2011, 3:03:21 PM7/24/11
to djan...@googlegroups.com
Hola a todos

Os envio corregido ejemplo de  http://www.dajaxproject.com/, en ajax.py

def updatecombo(request, option):
dajax = Dajax()
options = [ ['Madrid','Barcelona','Vitoria','Burgos'],
['Paris','Evreux','Le Havre','Reims'],
['London','Birmingham','Bristol','Cardiff'],]
out = ""
for o in options[int(option)]:
out += "<option value='#'>%s" % (o,)
print out

dajax.assign('#combo2','innerHTML',out)
return dajax.json()

Gracias a todos por vuestras aportaciones

eco...@gmail.com

unread,
Jul 25, 2011, 3:50:16 PM7/25/11
to Django-es
Te recomiendo seguir este ejemplo:
http://comolohashecho.wordpress.com/2010/03/31/combos-dependientes-django-jquery/

He usado Dajaxproject en un proyecto antes, y me parece que no es tan
rapida como usar directamente json y jquery.


Jhon Florencio

On 24 jul, 14:03, "Jordi Marco (itecnopartner, slu)"
<jordi.marco.s...@gmail.com> wrote:
> Hola a todos
>
> Os envio corregido ejemplo de  http://www.dajaxproject.com/, en ajax.py
>
> def updatecombo(request, option):
> dajax = Dajax()
> options = [ ['Madrid','Barcelona','Vitoria','Burgos'],
> ['Paris','Evreux','Le Havre','Reims'],
> ['London','Birmingham','Bristol','Cardiff'],]
> out = ""
> for o in options[int(option)]:
> out += "<option value='#'>%s" % (o,)
> print out
>
> dajax.assign('#combo2','innerHTML',out)
> return dajax.json()
>
> Gracias a todos por vuestras aportaciones
>
> El 24 de julio de 2011 20:38, Jordi Marco (itecnopartner, slu) <
> jordi.marco.s...@gmail.com> escribió:
>
> > Gracias, por la aportacion,
>
> > Estoy mirandohttp://www.dajaxproject.com/, lo he instalado y al testear
> > los ejemplos me da el siguiente error,
>
> > dajaxice_callback should be a function since dajaxice 0.2
>
> > Sabeis como solucionarlo.
>
> > Gracias
>
> > El 24 de julio de 2011 13:51, Javi <javi.azu...@gmail.com> escribió:
>
> > Echa un vistazo ahttp://www.dajaxproject.com/, es lo que necesitas

Eduard Diaz

unread,
Aug 1, 2011, 11:58:46 AM8/1/11
to djan...@googlegroups.com
Hola,

Sobre combos (select en html) dependientes, tipo provincia -> ciudades donde los datos son fijos, sean o no dependientes del idioma, es mucho mas eficiente crear archivos de texto plano en formato json, (ya sean generados o no por django) y guardarlo en el directorio media, de esta manera con jquery acceder a los datos es muy rápido.

Por ejemplo:

imaginemos que tenemos un archivo llamado provincias_es.js

[
    {"code": "15",  "label": "A Coru\u00f1a"},
    {"code": "02", "label": "Albacete"},
    {"code": "03", "label": "Alicante - Alacant"},
    ...
]

y para las ciudades lo mismo pero con los códigos y nombres correspondientes
(para solucionar el tema de los acentos el json lo he generado con python, con json.dumps())

cargarlo con jquery es muy fácil:

var json_url = '{{MEDIA_URL}}json/';
$.getJSON(json_url+'provinces_es.json', populate_province);
 $("#id_province").bind('change', function(){
       var code = $(this).val();
       $.getJSON('{{MEDIA_URL}}json/city_es_'+code+'.json', populate_city);
});

Ahora solo tienes que crear las funciones llamadas "populate_X" que convierta el json en el tag select y listo.

En un momento lo tienes hecho y te ahorras las consultas a la base de datos o los recursos de instalar toda una aplicación para algo que no se va a modificar con frecuencia (los nombres de las ciudades!)

Suerte y un saludo
--
//////////////////////////////////////////////////////////////////////////
Eduard Díaz
www.scopia.es
SCOPIA VISUAL INTERFACES SYSTEMS S.L.
Barcelona
Tel. 625 055 126, 933 171 771
//////////////////////////////////////////////////////////////////////////
Reply all
Reply to author
Forward
0 new messages