如何修改Many2One字段自动建议记录的数量限制?
解决Odoo Many2One字段下拉显示数量限制问题
针对sale.order.line模型中product_id字段下拉仅显示7条匹配记录的问题,别去改前端JS了——后端才是限制的源头,以下几种靠谱的解决方法:
方法一:直接在视图中设置字段显示限制
找到销售订单行的对应视图(如sale_order_line_form),给product_id字段添加limit属性,指定你想要的显示数量:
<field name="product_id" limit="20"/>
这种方式最快捷,只影响当前视图的该字段,无需修改业务逻辑代码。
方法二:通过模型继承修改字段上下文
如果需要全局生效,或者要结合其他上下文逻辑,可以继承sale.order.line模型,给product_id字段的上下文添加limit参数:
from odoo import models, fields class SaleOrderLine(models.Model): _inherit = 'sale.order.line' product_id = fields.Many2one( 'product.product', string='Product', domain=[('sale_ok', '=', True)], context={'search_default_sale_ok': 1, 'limit': 20} )
这里的limit参数会覆盖Odoo默认的7条限制,后端搜索时会返回对应数量的记录。
为什么修改前端JS没生效?
Odoo的Many2One下拉列表的记录是后端接口返回的,默认情况下后端最多返回7条匹配记录。前端组件只是渲染后端返回的数据,就算改了前端的显示逻辑,后端没返回更多记录也没用。所以优先从后端或视图层面调整限制。
内容的提问来源于stack exchange,提问作者holydragon
相关产品推荐
相关产品推荐

