Welcome!

This community is for professionals and enthusiasts of our products and services. Share and discuss the best content and new marketing ideas, build your professional profile and become a better marketer together.

0

Error al intentar actualizar un registro desde un modelo a otro

por
Andy Paredes
en 2/7/17 16:13 498 vistas

Al intentar actualizar un registro desde una clase a otra me genera un KeyError, en mi codigo tengo:

 

@api.depends('mode')

def _get_num_proceso(self):

for r in self:

year = fields.Date.today()

if r.mode == 'open':

ConsCA = self.env['test.cons'].search([])[-1].ConsCA

r.num_proceso = 'CA-CAB-00%d-%.4s' % (ConsCA,year)

ConsCA = ConsCA + 1

IncreaseCA = self.env['test.cons'].search([])[-1]

IncreaseCA.write({'ConsCA': ConsCA})

 

la idea es incrementar en 1 el campo que esta en el modelo test.cons segun la condicion ya que "mode" es un select con 7 opciones por lo que en "test.cons" hay 7 campos y un unico registro en el que de acuerdo al valor de "mode" se incrementara/actualizara el campo en aquel registro, obvio solo pongo el codigo resumido ya que lo demas es lo mismo variando solo el valor de "mode", espero alguien sepa como solucionar esto, aqui les dejo el error:

 

Traceback (most recent call last):

  File "/usr/lib/python2.7/dist-packages/odoo/http.py", line 638, in _handle_exception

    return super(JsonRequest, self)._handle_exception(exception)

  File "/usr/lib/python2.7/dist-packages/odoo/http.py", line 675, in dispatch

    result = self._call_function(**self.params)

  File "/usr/lib/python2.7/dist-packages/odoo/http.py", line 331, in _call_function

    return checked_call(self.db, *args, **kwargs)

  File "/usr/lib/python2.7/dist-packages/odoo/service/model.py", line 101, in wrapper

    return f(dbname, *args, **kwargs)

  File "/usr/lib/python2.7/dist-packages/odoo/http.py", line 324, in checked_call

    result = self.endpoint(*a, **kw)

  File "/usr/lib/python2.7/dist-packages/odoo/http.py", line 933, in __call__

    return self.method(*args, **kw)

  File "/usr/lib/python2.7/dist-packages/odoo/http.py", line 504, in response_wrap

    response = f(*args, **kw)

  File "/usr/lib/python2.7/dist-packages/odoo/addons/web/controllers/main.py", line 885, in call_kw

    return self._call_kw(model, method, args, kwargs)

  File "/usr/lib/python2.7/dist-packages/odoo/addons/web/controllers/main.py", line 877, in _call_kw

    return call_kw(request.env[model], method, args, kwargs)

  File "/usr/lib/python2.7/dist-packages/odoo/api.py", line 679, in call_kw

    return call_kw_model(method, model, args, kwargs)

  File "/usr/lib/python2.7/dist-packages/odoo/api.py", line 664, in call_kw_model

    result = method(recs, *args, **kwargs)

  File "/usr/lib/python2.7/dist-packages/odoo/models.py", line 3830, in create

    record = self.browse(self._create(old_vals))

  File "/usr/lib/python2.7/dist-packages/odoo/models.py", line 3997, in _create

    self.recompute()

  File "/usr/lib/python2.7/dist-packages/odoo/models.py", line 5312, in recompute

    vals = rec._convert_to_write({n: rec[n] for n in ns})

  File "/usr/lib/python2.7/dist-packages/odoo/models.py", line 5312, in <dictcomp>

    vals = rec._convert_to_write({n: rec[n] for n in ns})

  File "/usr/lib/python2.7/dist-packages/odoo/models.py", line 5211, in __getitem__

    return self._fields[key].__get__(self, type(self))

  File "/usr/lib/python2.7/dist-packages/odoo/fields.py", line 873, in __get__

    value = record._cache[self]

  File "/usr/lib/python2.7/dist-packages/odoo/models.py", line 5559, in __getitem__

    value = self._recs.env.cache[field][self._recs.id]

KeyError: 12

 

En KeyError se va incrementando segun tantas veces se intente calcular el campo que depende de "mode" en el @api.depends al crear el registro en mi clase principal. Saludos.


0

antes podes probar cambiando el primer search? porque el search puede traer valores o no traer nada. Y si no devuelve nada te va a dar error por como esta programada la función

 

  • Marcar

Cambiar el search en que manera? No se si te refieras al dominio que en este caso lo pongo vacío xq necesito que me traiga todos los registros y hacer referencia en el último así haya sólo uno existente en este caso pero más adelante existirán más.

Andy Paredes
de 3/7/17 11:26

Mantener informado

Acerca de esta comunidad

Esta comunidad es para profesionales y entusiastas de nuestros productos y servicios, compartir los mejores contenidos y nuevas ideas de marketing, construir su perfil profesional y mejorar el mercado para todos. Lea las directrices

Herramientas de las preguntas

66 seguidor(es)

Estadísticas

Preguntado: 2/7/17 16:13
Visto: 498 veces
Última actualización: 14/4/18 12:41