我在Odoo的产品中添加了一个名为x_low_inventory_level
的字段。我想在产品树的搜索视图中添加一个过滤器,该过滤器仅显示具有qty_available < x_low_inventory_level
的产品。这可能吗?我已尝试将其添加到搜索视图中:
<filter string="Low Inventory" name="low_inventory" domain="[('qty_available', '<', 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
答案 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)]"/>