El miércoles, 30 de septiembre de 2015, 7:30:21 (UTC+1), Sergi Almacellas
Abellana escribió:
>
> 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.
>
>
Eso es lo raro, que test_003 es la base de datos (return
self._pool[self.database_name][type][name]) y si se llama así
> 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.
>
Gracias, eso haré.
>
> Un saludo,
>
>
> --
> Sergi Almacellas Abellana
> www.koolpi.com
> Twitter: @pokoli_srk
>