Odoo Help

0

How can I pass a variable to .filtered to filter a recordset dynamically?

By
Jesse Rye
on 11/11/16, 6:41 PM 743 views

I am trying to pass a list of order_ids to .filtered so as to exclude them from my recordset but I seem to be getting an error global name "order_ids" is not defined. Below is an example of my code.

active_ids = ['34','35',36']
p = self.env['stock.pack.operation']
p_obj = p.search([['id','in',active_ids]])
order_ids = ['1','2','3'] 
p_obj.filtered(lambda r: r.origin_id.id IN order_ids)

This issue is regarding Odoo 9.

Jesse Rye
on 11/11/16, 6:42 PM
0
Nicolas JEUDY
On 3/1/17, 12:40 PM

Hello, 

I use with_context to enable this:

```

p_obj.with_context(filter_order_ids=order_ids).filtered(lambda r: r.origin_id.id IN r._context['filter_order_ids'])

```

Think it can be your solution ...

0
Jesse Rye
On 11/12/16, 6:10 PM

Thanks for your reply. I wanted to use filtered so I could filter the recordset already being used rather than creating a completely new recordset.

0
Axel Mendoza
On 11/12/16, 5:22 PM

Search for specific ids makes no sense(at least that you want to make sure that an id really exists), use a direct browse to that like:

 self.env['stock.pack.operation'].browse([34,35,36])

or you could directly search for that using the proper domain, because 

p_obj = self.env['stock.pack.operation'].search([('id', 'in, [34,35,36]), ('origin_id.id', 'in', [1,2,3]))


About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.

Register

Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

1 follower(s)

Stats

Asked: 11/11/16, 6:41 PM
Seen: 743 times
Last updated: 3/1/17, 12:40 PM