Odoo搜索视图过滤器使用模型中的值

时间:2017-07-19 20:31:16

标签: openerp

我在Odoo的产品中添加了一个名为x_low_inventory_level的字段。我想在产品树的搜索视图中添加一个过滤器,该过滤器仅显示具有qty_available < x_low_inventory_level的产品。这可能吗?我已尝试将其添加到搜索视图中:

<filter string="Low Inventory" name="low_inventory" domain="[('qty_available', '&lt;', x_low_inventory_level)]"/>

但是我收到了一个错误:

https://my-instance.odoo.com/web/content/525-9a23e87/web.assets_backend.js:1715
Traceback:
Error: Failed to evaluate search criterions: 
{"code":400,"message":"Evaluation Error","data":{"type":"local_exception","debug":"Local evaluation failure\nNameError: name 'x_low_inventory_level' is not defined\n\n{\"domains\":[[],\"[('qty_available', '<', x_low_inventory_level)]\"],\"contexts\":[{\"lang\":\"en_US\",\"tz\":false,\"uid\":1,\"params\":{\"action\":418,\"min\":1,\"limit\":80,\"view_type\":\"list\",\"model\":\"product.product\",\"menu_id\":84,\"_push_me\":false}},{}],\"group_by_seq\":[]}"}}
    at Object.<anonymous> (https://my-instance.odoo.com/web/content/525-9a23e87/web.assets_backend.js:1715:1192)
    at fire (https://my-instance.odoo.com/web/content/528-59c08d4/web.assets_common.js:541:299)
    at Object.fireWith [as resolveWith] (https://my-instance.odoo.com/web/content/528-59c08d4/web.assets_common.js:546:198)
    at Object.deferred.(anonymous function) [as resolve] (https://my-instance.odoo.com/web/content/528-59c08d4/web.assets_common.js:548:56)
    at https://my-instance.odoo.com/web/content/525-9a23e87/web.assets_backend.js:1625:3

2 个答案:

答案 0 :(得分:2)

我认为你不能这样做而是用store = true创建一个计算字段。

此字段例如是布尔字段。并在“搜索”视图中使用它,但请确保将store设置为true。

希望你能得到这个想法。

答案 1 :(得分:1)

创建布尔字段

is_low_inventory_level = fields.Boolean('qty_available is_low_inventory_level', default=False)

然后使用函数返回True或False

@api.onchange('qty_available','x_low_inventory_level')
def _onchange_qty_available(self):
   if self.qty_available < x_low_inventory_level:
      self.is_low_inventory_level = True
   else:
      elf.is_low_inventory_level = False

并在XML中执行类似这样的操作

<filter string="Low Inventory" name="low_inventory" domain="[('is_low_inventory_level', '!=', False)]"/>