Que es el ID en Odoo? Y como interpretar la estructura de datos de una tabla de Odoo.

17 de julio de 2023 por
Gustavo Orrillo
| Sin comentarios aún
 

Todo los objetos de Odoo (con excepción de los wizard) se persisten en tablas de una base de datos PosgreSQL. A menos que el desarrollador indique lo contrario, el nombre de la tabla que persiste el objeto es el nombre del modelo al que se reemplazan los puntos por los guiones bajos. Asi por ejemplo, el modelo res.country (que administra los paises) en la base de datos se persiste en la tabla res_country (account.move en account_move y así sigue la lista).

El ORM al crear un nuevo modelo también le crea un conjunto de columnas con valores default (por ejemplo cuando se crea un registro y por quien, campos create_date y create_uid). Por ejemplo, si listamos la estructura de la tabla res_country_state observaremos:


Aca vemos que (mas allá de los índices y las claves foraneas) hay cuatro campos creados por defecto: id, create_uid, create_date, write_uid, write_date. Veamos que hacen cada uno de ellos:

  • id: clave primaria del registro. Esta columna PostgreSQL la actualiza automáticamente. PostgreSQL se encarga de mantener el valor de este campo (y de la secuencia).
  • create_uid: ID del usuario que creó el registro. Actualizado en forma automática por Odoo.
  • create_date: timestamp con el momento en el que se creó el registro. Actualizado en forma automática por Odoo.
  • write_uid: ID del último usuario que actualizó el registro. Actualizado en forma automática por Odoo.
  • write_date: timestamp con el momento en que por última vez fue actualizado el registro. Actualizado en forma automática por Odoo.

El campo más importante a nivel integridad para Odoo es el campo ID. Como desarrollador de Odoo uno no debe preocuparse de la integridad referencial, Odoo se encarga solo de mantenerla. Cuando uno crea un nuevo registro en un modulo automáticamente se actualiza su columna ID con una secuencia única para la tabla. Y dicho valor será la clave para referenciar en las claves foráneas (los campos many2one, siempre tienen almacenado el ID de la tabla referenciada).

Como decíamos, cada registro tiene un ID. Entonces, como podemos hacer para conocer el ID del registro con el que estamos trabajando? Es muy facil. La primer forma es mirando el URL,


Como pueden ver la URL tiene el elemento model=crm.lead (lo que indica que se está trabajando con las iniciativas y oportunidades del módulo CRM) y el elemento id=741 (lo que indica que es el registro con ID igual a 741 (la clave primaria). 

La siguiente manera de averiguar el ID es con el modo desarrollador, uno clickea en "Ver Metadatos" y podrá observar:


Cuando uno desarrolla en Odoo uno debe estar al tanto de la existencia de los IDs. Si bien el ORM hace un buen trabajo ocultando su existencia, la verdad es que es algo que uno necesita saber sobre todo por la existencia de campos many2one y many2many. 

Ahora, mientras uno trabaja con xmlrpc, es fundamental saber de la existencia de los IDs. Ya que la secuencia de las operaciones en xmlrpc siempre es: search (para buscar los registros con los que trabajar) lo que devuelve una lista de IDs, y luego se procesan esos IDs donde uno por uno o se lee (read) o se escribe (write) o se borra (unlink).



Gustavo Orrillo 17 de julio de 2023
Compartir
Categorías
Archivar
Identificarse dejar un comentario