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