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 
>

Responder a