Filtrar Zonas o Categorías en Django

Milton Mazzarri milmazz en milmazz.com
Mar Sep 12 07:03:05 CEST 2006


Saludos cordiales,

En un desarrollo que recientemente he comenzado a realizar con
Django[1], me ha tocado implementar la inserción de reclamos por zonas,
las cuales están dividas en:

Estados
..Municipios
....Parroquias

Los reclamos se emiten por parroquias (más baja en la jerarquía), la
manera en la cual está implementado hasta ahora funciona, pero me
gustaría que se pudiese realizar un filtrado por Estados, seguidamente
por Municipios y al final solo quedarán las Parroquias correspondientes.

Los motivos por los cuales espero lograr hacer esto son los siguientes:
* Los datos de las zonas son bastante detallados, mucha información.
* Debido al punto anterior, el usuario tendría que perder demasiado
tiempo buscando la opción correcta.
* Mejorar la facilidad de uso de la aplicación.

Les coloco un pequeño ejemplo:

#models.py
from django.db import models

class Estado(models.Model):
....nombre = models.CharField(maxlength=32)

....def __str__(self):
........return self.nombre

....class Admin:
........pass

class Municipio(models.Model):
....nombre = models.CharField(maxlength=32)
....estado = models.ForeignKey(Estado)

....def __str__(self):
........return self.nombre

....class Admin:
........pass

class Parroquia(models.Model):
....nombre = models.CharField(maxlength=32)
....municipio = models.ForeignKey(Municipio)

....def __str__(self):
........return self.nombre

....class Admin:
........pass

class Reclamo(models.Model):
....motivo = models.TextField(help_text='Motivo del reclamo')
....zona = models.ForeignKey(Parroquia)

....def __str__(self):
........return self.motivo
....class Admin:
........pass


En la clase «Reclamo» quisiera algo similar a esto:

class Reclamo(models.Model):
....motivo = models.TextField(help_text='Motivo del reclamo')
....zona_estatal = models.ForeignKey(Estado)
....zona_municipal = models.ForeignKey(Municipio)
....zona_parroquial = models.ForeignKey(Parroquia)

....def __str__(self):
........return self.motivo
....class Admin:
........pass

Y realizar el filtrado mientras voy seleccionando cada una de las
opciones al principio (Estado, Municipio, Parroquia). Supongo que
debería implementar algún tipo de método que realice consultas SQL a la
base de datos.

Alguien tiene alguna experiencia en este tipo de operación bajo el
framework Django?. Me sugieren leer alguna documentación al respecto?.

Un saludo, muy buen día.

[1] http://www.djangoproject.com/
-- 
Milton Mazzarri, a.k.a. [MilMazz]
http://www.milmazz.com
Key fingerprint = E802 439A 1B04 59A0 E4B6 0169 1BEB 5EF6 B815 DE42




Más información sobre la lista de distribución Python-es