[pyar] Ayuda para api con django-rest-framework

Gustavo Marino gamarino en numaes.com
Mie Ene 3 20:27:47 ART 2018


Hola!

No soy muy conocedor de Django, pero te puedo contar lo que pasa en otra
plataforma de ORM - Odoo.

Los filtros sobre campos calculados pueden ser implementados:

   - Analizando el criterio de búsqueda, sacando todas las expresiones que
   contengan los campos calculados (con lo que obtendrás un superset de los
   resultados) e implementar antes de devolver el resultado el filtrado solo
   para las expresiones que tengan campos calculados.
   Super complejo para hacerlo bien, por la conversión de la expresión de
   búsqueda, la correcta implementación del segundo nivel de búsqueda (que
   puede implicar traer de la base de datos muchos registros más que los
   necesarios)
   - No permitir los campos calculados en las expresiones de búsqueda, y
   dejarle al usuario del sistema que encuentra la manera de arreglarse sin
   ellos
   Horrible, pero algunos lo hacen
   - Hacer un cache de los campos calculados.
   Esto es, efectivamente convertir los campos calculados en campos de la
   base de datos, y por lo tanto dejar que el motor de base datos resuelva la
   búsqueda y el filtrado eficiente sin leer datos innecesarios (cosa que sabe
   hacer bien).
   Todo muy lindo, pero implica desarrollar una estrategia inteligente para
   actualizar los campos calculados cuando lo campos de los cuales dependen
   hayan variado su valor. Esta dependencia puede ser muy compleja (por
   ejemplo en una linea de pedido, puede ser que cambie el % de un impuesto
   asignado a un producto, y con ello el sutotal de impuestos del pedido). Es
   dificil de implementar bien, trivial si los campos de los que dependen son
   del mismo registro, pero complejo si vas a tener en cuenta las dependencias
   indirectas a traves de las relaciones del objeto. Es lo que hace Odoo

De cualquier modo es dificil.

Gustavo Adrian Marino



Mobile:  +54 911 5498 2515

Email: gamarino en numaes.com

Skype: gustavo.adrian.marino



[image: Descripción: Numa Logo V 1-0]


El 3 de enero de 2018, 18:28, Federico Gonzalez <
federicogonzalez761 en gmail.com> escribió:

> Buenas,
>
> Tengo un problema con la api que estoy armando y quería consultar para ver
> si alguien tenia una solución.
> Tengo un modelo que quiero hacer una api rest en la cual poder filtrar,
> ordenar, paginar y buscar.
> Actualmente hace todo eso pero me encontré con un problema al querer
> ordenar y/o filtrar por datos del modelo que no son fields sino que
> property's (no estan en la db).
> Para el caso de ordenar logre que algo me funcione (aunque no me gusta
> mucho) pero para el caso de filtrar todavía no logre hacerlo.
> Para que vean el código:
> 1- El Serializer del modelo: serializer
> <https://github.com/eventoL/eventoL/blob/develop/eventol/eventol/api.py#L14>
> 2- El modelo: model
>
>
> <https://github.com/eventoL/eventoL/blob/develop/eventol/manager/models.py#L17>
> En ese código pueden ver que por ejemplo attendees_count es una property
> que se calcula en el serializer/viewset y la api no solo lo muestra sino
> que puede ordenar por ese "campo" pero no puede filtrar por ese campo.
> En resumen, lo que me gustaria es primero saber que opinan de eso, segundo
> ver como puedo hacer lo mismo con esta property: last_date
> <https://github.com/eventoL/eventoL/blob/develop/eventol/manager/models.py#L41>
> y por ultimo saber si se puede filtrar por alguna property calculada.
>
> Saludos
> Fede
>
> _______________________________________________
> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
> Sitio web: http://www.python.org.ar/
>
> Para administrar la lista (o desuscribirse) entrar a
> http://listas.python.org.ar/listinfo/pyar
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20180103/c95ac167/attachment-0001.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: image001.jpg
Type: image/jpeg
Size: 3995 bytes
Desc: no disponible
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20180103/c95ac167/attachment-0001.jpg>


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