Cargando



Django - Base de Datos

En este tutorial veremos los métodos con los cuales preparamos los datos de los campos para hacer el almacenamiento de los mismos en la base de datos de nuestra aplicación.


mar 09 2014 07:23
Avanzado
mar 12 2014 12:53
Una vez que es establecido el modelo y todo lo relacionado al mismo el siguiente aspecto a tomar en cuenta es como los diferentes campos interactúan con la base de datos.

Al hablar del comportamiento de la base de datos nos referimos a la forma en la cual debemos ver como los datos son preparados para ser almacenados, la forma en que hacemos las comparaciones con los tipos de datos de Python con los cuales se representan sus valores en nuestra aplicación en Django.

db_type(self, connection)

Este método es raramente sobrescrito por las clases y subclases de las aplicaciones, devuelve una cadena que contiene datos específicos de base de datos que controlan, como son creadas las columnas de campos determinados.
Es importante mencionar que el valor retornado con este método es particular del backend de base de datos utilizado en la aplicación, por lo que si decidimos utilizarlo en proyectos con diferentes backends de bases de datos debemos obtener el valor de la conexión utilizando connection.settings_dict['ENGINE']

Veamos en la siguiente imagen como podemos plasmar en código el uso básico de este método:

django_bd.jpg


Al analizar el código vemos que si el motor de la base de datos es postgreSQL vamos a retornar un valor para el campo, diferente de si es otro motor como por ejemplo MySQL, así podemos ver un pequeño ejemplo de la utilidad de este método.

get_prep_value(self, value)

Este es un método que sirve de base para otros métodos que deben preparar los datos para que sean utilizados por la base de datos.

En la mayoría de los casos la conversión de los objetos Python a datos más simples que puedan trasladarse a la base de datos no representa mayor problema y podemos utilizar la conversión estándar, sin embargo cuando queremos hacer conversiones más complejas como por ejemplo un tipo de fecha podemos utilizar este método para encargarnos de ese trabajo, en el siguiente gráfico tenemos una forma de lograr esto que hemos descrito.


django_bd2.jpg


En el ejemplo al definir un tipo de campo DurationField sobrescribimos el método get_prep_value() de forma que tome el objeto fecha y lo transforme en valores decimales para poder utilizarlo en base de datos sin mayor complicación.

get_db_prep_value(self, value, connection, prepared=False)

Hay casos en los que nuestra aplicación corre en más de un motor de base de datos, para ello este método nos permite hacer la preparación de los datos en base al motor, gracias al connection.settings_dict['ENGINE'] podemos incorporar casos diferentes según el motor.

Un ejemplo es cuando trabajamos con postgreSQL, este motor puede manejar los objetos de fecha directamente, por lo que si detectamos que es él, podemos pasar el valor directamente, veamos en el ejemplo a continuación como combinamos este método y el anterior para lograr un resultado más robusto:


django_bd3.jpg


Con esto terminamos el tutorial, sabiendo que podemos controlar el comportamiento de la base de datos en Django utilizando los métodos de preparación de los datos de los campos de un modelo.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X