Passa al contenuto
Menu
È necessario essere registrati per interagire con la community.
La domanda è stata contrassegnata
2 Risposte
15204 Visualizzazioni

I'm trying to constraint the domain of a many 2 one field using an external id (The XML id).

I want to be able to choose product which are variant of a specific product template.

#This piece of code doesn't work
the_field = fields.Many2one('product.product', domain = [('product_tmpl_id','=', "ref('the_package.the_external_id')")])


The code above doesn't work for some reason. But I've been able to look in the database to resolve the external id and it's 56. With that knowledge, I've been able to hardcode the following line and make everything work.


#This piece of code works, but it's hardcoded

the_field = fields.Many2one('product.product', domain = [('product_tmpl_id','=', 56)])

How can I do to solve this using the External id and not the hardcoded id in database?


EDIT: I cannot access all the self variables (self.env, self.pool, ...) since I'm in a static context. 

Avatar
Abbandona
Autore Risposta migliore

I've found the solution to my problem with the help of Kinner Vachhani.

I simply needed to create a function which will return the domain filter like this:

@api.model
def _get_domain(self):

    ids = self.env.ref('the_package.the_external_id').ids
return [('product_tmpl_id','=', ids)]

the_field = fields.Many2one('product.product', required=False,   domain = _get_picking_product_domain)
Avatar
Abbandona
Risposta migliore

You can get res_id (resource id) by searching ir_model_data. 

E.g 
imd_obj = self.pool['ir.model.data']
ext_ids = imd_obj._get_id('module_name', 'external_identifier')


Avatar
Abbandona
Post correlati Risposte Visualizzazioni Attività
0
giu 16
2498
0
feb 25
18
2
mar 16
9849
0
mar 15
3511
1
mar 15
3372