搜索数据库中的记录

时间:2015-04-06 13:42:47

标签: odoo

我从另一个类获取这个价格(假设这个例子为500),我想知道如何使用搜索功能从下面的列表中获取ID。

例如我在我的数据库中有这个,我想使用搜索功能来获取我的价格大于MIN_PRICE并低于我的MAX_PRICE的ID。在我的情况下,价格是500我希望它返回ID 2。

SQL示例:WHERE price > MIN_PRICE ANDnd price > MAX_PRICE

ID     MIN_PRICE       MAX_PRICE
 1             0             100
 2           101            1000
 3          1001           10000
 4         10001          100000

我用最低价尝试了以下但没有成功:

self.search(cr, uid, [(self.browse(cr, uid, ids).min_price,'in', price_untaxed)])

3 个答案:

答案 0 :(得分:2)

搜索需要搜索域并返回匹配记录的记录集。

域是一个标准列表,每个标准是(field_name,operator,value)的三元组(列表或元组)。

有关域名的更多信息: https://stackoverflow.com/a/14618598/3374651

对于v8:

self.search([('price', '=', MIN_PRICE), ('price', '=', MAX_PRICE)]) # Will return list of matched recordset

对于第7版:

self.pool.get("model_name").search(cr, uid, [('price', '=', MIN_PRICE), ('price', '=', MAX_PRICE)], context=context) # Will return list of matched ids

答案 1 :(得分:0)

您可以使用以下

self.search(cr, uid, [('price','>','MIN_PRICE'),('price','<','MAX_PRICE')],context=context)

答案 2 :(得分:0)

在搜索方法中,您需要通过域(过滤标准)。 搜索方法为您提供了ids []的列表。

self.search(cr, uid, [('price','>','MIN_PRICE'),('price','<','MAX_PRICE')],context=context)

self.pool.get('model_name').search(cr, uid, [('price','>','MIN_PRICE'),('price','<','MAX_PRICE')],context=context)