miércoles, 17 de febrero de 2021

Emular método __str__ de Django en el EndPoint

 

Aunque el título puede sonar muy ostentoso, la idea principal de este post, es responder a una duda en el curso Aprende VueJS + Django con Ejemplos Prácticos, donde un alumno preguntó cómo podía hacer para que en el FrontEnd (Vue) se viera a como se ponía en el método __str__.

 

En la documentación de Django, definen el método __str__ como la forma de poder referenciar a una instancia de un objeto con un texto o string, en lugar de colocar caracteres hexadecimales o el nombre de la clase, en nuestro caso sería el nombre del modelo.

El modelo consultado era sobre SubCategoria, que la definición en el curso es: 


 

Como puedes ver, el método __str__ devuelve la concatenación de la descripción de la categoria, un guión y luego la descripción de la subcategoría.


La idea es hacer el cambio de tal forma que no afectemos la base de datos, así que lo que se me ocurrió es utilizar una propiedad (con el decorador @property) en el modelo, que tenga la concatenación del método __str__, esta nueva propiedad sería agregada en el serializador y listo, ya tendría lo que él desea.


Sin los cambios, se tiene esta salida.




Como puedes ver, tiene la descripción de la subcategoría y de la categoría por separado, según se formó todo.

Luego agreamos la nueva propiedad.



Y también en el serializador.




Y la salida del endpoint sería la siguiente:




Y ya con eso hemos "emulado" la funcionalidad de __str__ en el endpoint y por ende, ya el FrontEnd puede tenerlo así, sin necesidad de hacer cambios tan drásticos.


Si deseas ver el proyecto completo o aprender más sobre Django o su integración con VUE, no dudes en entrar a alguno de los siguientes enlaces




Si deseas estar enterado de más tutoriales o promociones de cursos, inscríbete en la lista de correos.

0 comentarios:

Publicar un comentario

¿Tienes algún comentario? ¿Qué te ha parecido este artículo? Cuéntalo.

 
>