Obtener el id actual del registro.

548 views
Skip to first unread message

Luis Sagastume

unread,
Sep 12, 2016, 5:09:14 PM9/12/16
to Usuarios Odoo / OpenERP en España
Hola,

Estoy tratando de hacer una consulta a la base de datos basado en el id actual del registro, pero he probado de varías formas para obtener el id actual del registro y lo único que recibo es un objeto NewId.

En consola:
<openerp.models.NewId object at 0x7fde6d4f1810>


Lo que quiero es hacer una consulta a la base de datos con el id actual con el decorador depends:

    @api.one
    @api.depends('transit_ids')
    def compute_transit_log(self):
      self.env.cr.execute("select id, date from transit_log where fleet_travel_transit_log_id = %d order by date asc" % (self.id))


La versión que estoy usando es la 9.0,  Muchas Gracias de ante mano.

Gabriel Davini

unread,
Sep 12, 2016, 5:14:32 PM9/12/16
to openerp-s...@googlegroups.com
2016-09-12 18:09 GMT-03:00 Luis Sagastume <luissaga...@gmail.com>:
En consola:
<openerp.models.NewId object at 0x7fde6d4f1810>

Esto pasa porque el objeto todavía no fue creado. Es decir, no está en la base de datos todavía.
 
Lo que quiero es hacer una consulta a la base de datos con el id actual con el decorador depends:

    @api.one
    @api.depends('transit_ids')
    def compute_transit_log(self):
      self.env.cr.execute("select id, date from transit_log where fleet_travel_transit_log_id = %d order by date asc" % (self.id))

podrías hacer algo asi:

if not isinstance(models.NewId, self.id):
   # tu query por aqui

tené en cuenta que el decorador api.one está deprecado, no deberías usarlo.

Saludos.

--
Gabriel.

Luis Sagastume

unread,
Sep 12, 2016, 6:22:34 PM9/12/16
to Usuarios Odoo / OpenERP en España

Muchas gracias Gabriel por tu respuesta.  

La he probado pero el registro ya existe en la base de de datos desde PSQL




Es el unico registro que tengo ahorita para pruebas y ya fue creado y guardado, la consulta la agrege despues de que ya existe el registro y cuando intento hacer la consuelta siempre devuelve NewId.

Luis Sagastume

unread,
Sep 12, 2016, 6:36:29 PM9/12/16
to Usuarios Odoo / OpenERP en España
He visto ahorita que en modo edit devuelve el objeto NewId pero al momento de darle Guardar devuelve el id que es y hace la consulta.  Los datos no se modifican hasta que se de guardar si se queda en la vista edición del formulario los datos no se actualizan.

Gabriel Davini

unread,
Sep 12, 2016, 7:13:46 PM9/12/16
to openerp-s...@googlegroups.com
Raro, no he tenido ese problema en la 8, aún usando la api nueva.

Probaste quitando el @api.one y ver qué sucede?

--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsub...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Gabriel.

Pedro Manuel Baeza Romero

unread,
Sep 12, 2016, 7:45:15 PM9/12/16
to Usuarios Odoo / OpenERP en España
La cuestión es que estás utilizando SQL para algo que no se debería hacer a ese nivel. Hay que trabajar con el ORM de Odoo. Tienes que declarar un campo one2many que enlace vía el campo "fleet_travel_transit_log_id", y ya lo tendrás hecho:

transit_log_ids = fields.One2many(comodel_name="transit.log", inverse_name="fleet_travel_transit_log_id")

Si quieres especificar un orden, añádelo en el modelo transit.log con la variable _order.

Un saludo.

Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsubscribe...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Gabriel.

Luis Sagastume

unread,
Sep 12, 2016, 10:41:36 PM9/12/16
to Usuarios Odoo / OpenERP en España
Gracias Gabriel.

Si hice esa modificación de quitar @api.one y siguio lo mismo.   Con la recomendación que me diste de esto:
if not isinstance(models.NewId, self.id):

genero un error y hice este cambio:
if not isinstance(self.id, models.NewId):

Y no ejecuto el query.   Muy raro no se que pueda hacer.   Ahorita la solucción es que guardo una referencia con otro campo calculado y mientras encuentro la solución estoy usando eso.

Gracias Gabriel por tu ayuda.

Luis Sagastume

unread,
Sep 12, 2016, 10:46:06 PM9/12/16
to Usuarios Odoo / OpenERP en España
Gracias Pedro por tu respuesta.

Ese campo de esa forma ya le tengo.   La razón de porque quiero hacer eso es porque calculo cierto datos dependiendo del registro anterior que estan relacionados.  Entonces por esa razón necesito recuperar todos los registros y modificar los registros si tan solo uno cambia,  tienen que calcularse otra vez todos los campos de estos registros que estan relacionados como One2Many.  Son los requirimientos del modelo entonces es por eso que estoy haciendo eso.   Habrá otra solución mejor a esa?
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsub...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Gabriel.

Pedro Manuel Baeza Romero

unread,
Sep 13, 2016, 7:36:56 AM9/13/16
to Usuarios Odoo / OpenERP en España
Luis, todos los recursos los tienes disponibles con campos One2many, Many2many, campos calculados, related, dominios... por lo que no necesitas consultas SQL, pero no termino de entender lo que quieres hacer, así que no te puedo ayudar más ahora mismo.

Un saludo.

Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsubscribe...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Gabriel.

--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsubscribe...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

Luis Sagastume

unread,
Sep 13, 2016, 9:26:46 AM9/13/16
to Usuarios Odoo / OpenERP en España
Lo que tengo es un modelo donde hay una relación One2many esos registros One2many los muestros en el formulario como una lista donde aparecen la lista completa que estan relacionados.   Existe un dato que es calculado basado en el dato anterior de One2many.   Eso quiere decir que si modifico un registro One2many todos los que estan relacionados tienen que cambiar porque el registro anterior depende de el.    Los campos calculados no lo puede hacer dentro del modelo relacionado porque solo se podria hacer dependecias en un solo registro.      Para poder calcular lo tengo que hacer el el modelo central. Y esa es la razón de porque estoy usando sql porque se debe de actulizar todos los registros de One2Many.

Gracias por tu tiempo Pedro.
Saludos.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsub...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Gabriel.

--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsub...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Pedro Manuel Baeza Romero

unread,
Sep 14, 2016, 2:58:55 AM9/14/16
to Usuarios Odoo / OpenERP en España
Pero igualmente te puedes hacer un campo calculado que dependa de ese campo one2many y no lleve SQL...

Un saludo.

Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsubscribe...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Gabriel.

--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsubscribe...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsubscribe...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

Luis Sagastume

unread,
Sep 16, 2016, 12:30:14 PM9/16/16
to Usuarios Odoo / OpenERP en España
Gracias Pedro si tienes razón no hace falta SQL se puede con la api de odoo se simplifico todo.   Pero sigo teniendo el problema de id del record actual.    sigue guardando NewId cuando ya esta guardado el registro.   Pareciera que hiciera una copia del registro cada vez que se da editar me parece extraño pero todavía no encuentro el porque.   Gracias.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsub...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Gabriel.

--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsub...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsub...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages