[pyar] [DRF] Consulta Filtros

Marco Moresi mrc.moresi en gmail.com
Mar Ene 24 12:07:50 ART 2017


Buenas, como va?
Hace algún tiempo vengo trabajando en un proyecto en Django Rest, pero
ahora me topé con un "problema", estoy tratando de hacer "dinámicos" los
filtros de la app, mis modelos son electrodomésticos (aire acondicionados,
tv, etc etc).


Modelo del Aire acondicionado:
def AireAcond(models.Model):
...

marca = ....
  friocalor = ....
  potencia = ...
  precio = ….

...


Luego cree los filtos para la queryset con los backend filters de DRF.

Def AireAcondFilter(FilterSet):

...

min_precio = django_filters.NumberFilter(name="tiendas__precio",
lookup_expr='gte')
potencia = AllValuesMultipleFilter(name="potencia", widget=CSVWidget())
marca = AllValuesMultipleFilter(name="marca", widget=CSVWidget())

...

Ahora cuando quiero pasarle al frontend los posibles valores disponibles de
filtrado, lo estoy haciendo en otra vista que se encarga de consultar esto.
Es decir, el frontend para armar su vista tiene que consultarle al backend
por 2 vistas distintas, una la vista de lista de los aires y otra la vista
de filtros para poder obtener los valores disponibles... esto seguramente
se debe poder implementar de otra forma mejor pero no logro encontrar como.

La idea es poder mostrar algo parecido a lo que hace DRF en la versión
"browsable".

El problema de esta forma de implementación es que cuando se comienzan a
aplicar los filtros en la vista de lista, los siguientes valores
disponibles para filtrar ya no son los mismos que al inicio (que son los
que muestra la vista de filtros), una solución posible que se me ocurre ver
la forma de pasarle el queryset resultante una vez aplicados los filtros a
la otra vista, pero esto creo seguiría ofuscando la implementación, supongo
que debe existir alguna otra forma mas transparente de hacerlo, estuve
viendo los schemas, pero no logro entender como adaptarlos a lo que
necesito, alguna idea o consejo?
Desde ya muchas gracias.

Saludos Marco
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20170124/5efcb718/attachment.html>


Más información sobre la lista de distribución pyar