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?

Gracias

Responder a