El 29/09/15 a les 20:12, Antonio Roncero ha escrit:
Hola,

a partir de una sugerencia del foro estoy intentado usar el tipo de
campo fields.Reference. He tomado como base el modulo ir.attachment que
lo usa y teniendo un codigo así
|

...

type = fields.Reference('Type', selection='models_get',
         select=True)

     # Es copiado del ir.attachment
     @staticmethod
     def models_get():
         pool = Pool()
         Model = pool.get('ir.model')
         ModelAccess = pool.get('ir.model.access')
         models = Model.search([]) # hacer mas adelante la busqueda
segun 'name' para que solo aparezcan los que quiero
         access = ModelAccess.get_access([m.model for m in models])
         res = []
         for model in models:
             if access[model.model]['read']:
                 res.append([model.model, model.name])
         return res
|

Me lanza una excepcion en la linea
Model = pool.get('ir.model')

|
[Tue Sep 29 14:09:09 2015] ERROR:trytond.protocols.dispatcher:Exception
calling model.service.service.fields_view_get from
1@::1:41673/onneo_20150706
Traceback (most recent call last):
   File "/home/dev/tryton/trytond/protocols/dispatcher.py", line 161, in
dispatch
     result = rpc.result(meth(*c_args, **c_kwargs))
   File "/home/dev/tryton/trytond/model/modelview.py", line 239, in
fields_view_get
     result['field_childs'])
   File "/home/dev/tryton/trytond/model/modelview.py", line 300, in
_view_look_dom_arch
     if not ModelAccess.check_relation(cls.__name__, name, mode='read'):
   File "/home/dev/tryton/trytond/ir/model.py", line 567, in check_relation
     selection = sel_func()
   File "/home/dev/tryton/trytond/modules/service/service.py", line 17,
in models_get
     Model = pool.get('ir.model')
   File "/home/dev/tryton/trytond/pool.py", line 168, in get
     return self._pool[self.database_name][type][name]
KeyError: 'test_003'
|

siendo 'test_003' el  nombre de la base de datos. No se a que puede ser
debido porque coger el ir.model es como coger cualquier otro modelo.

¿Alguna pista?

Tiene pinta que en la tabla ir.model tienes registrado el model test_003 que no tienes en el código actual.

De todos modos, si sólo quieres poder relacionar el reference con unos modelos específico mejor que cojas cómo ejemplo el campo origin del los Asientos contables.

Un saludo,


--
Sergi Almacellas Abellana
www.koolpi.com
Twitter: @pokoli_srk

Responder a