odoo使用委托继承产品模板,需要更改表单上categ_id的默认值
Posted
技术标签:
【中文标题】odoo使用委托继承产品模板,需要更改表单上categ_id的默认值【英文标题】:odoo Inheriting Product Template using delegation, need to change default value for categ_id on form 【发布时间】:2020-06-18 17:59:50 【问题描述】:通过委托产品模板继承。在表单视图中,我放置了 categ_id 字段。这默认为“全部”,我希望它默认指向不同的类别。我尝试了以下方法,
<field name="categ_id" domain="[('name', '=', 'Paper')]"/>
成功地将下拉列表过滤为我想要的类别,但“全部”仍显示为默认值。
接下来,我尝试将上下文放置在窗口操作和具有变化的字段中,例如
context="'default_categ_id':%(pse.product_category_materials_paper)d"
context="'default_categ_id':'Paper'"
context="'default_categ_name':'Paper'"
在字段 categ_id 定义中,default=the _get_default_category_id 是来自调试器的问题。它绕过了以下行,
return self._context.get('categ_id') or self._context.get('default_categ_id')
书上说在新模型中无法访问继承模型?所以我也尝试了覆盖该函数,但它没有工作(这甚至可能,因为这是委托?)
任何指针都会有所帮助。 谢谢!
【问题讨论】:
【参考方案1】:经过一番研究,更新 default_get 方法正在起作用。
@api.model
def default_get(self, vals):
res = super(Paper, self).default_get(vals)
categories = self.env['product.category'].search([('name', '=', 'Paper')])
if categories:
res.update('categ_id': categories[0].id)
return res
不过,如果纸张不存在,仍需要进行错误检查。将其指向产品模板“全部”默认值。
【讨论】:
【参考方案2】:请注意,字段类别 id 具有在基础中运行的默认功能。你可以改变
categ_id = fields.Many2one(
'product.category', 'Internal Category',
change_default=True, default=_get_default_category_custom,
required=True, help="Select category for the current product")
请随意编写 _get_default_category_custom 函数。也就是将类别指定为纸张。
【讨论】:
以上是关于odoo使用委托继承产品模板,需要更改表单上categ_id的默认值的主要内容,如果未能解决你的问题,请参考以下文章
Odoo 13:如何为同一产品使用每个公司的不同重量单位计量单位