odoo 使用委托继承产品模板,需要更改表单上 categ_id 的默认值
odoo Inheriting Product Template using delegation, need to change default value for categ_id on form
正在委托产品模板继承。在窗体视图中,我放置字段 categ_id。这默认为 'All',我希望它默认指向不同的类别。我尝试了以下方法,
<field name="categ_id" domain="[('name', '=', 'Paper')]"/>
成功将下拉列表过滤为我想要的类别,但 'All' 仍显示为默认类别。
接下来,我尝试将上下文放在 window 操作中,并将字段设置为
context="{'default_categ_id':%(pse.product_category_materials_paper)d}"
context="{'default_categ_id':'Paper'}"
context="{'default_categ_name':'Paper'}"
字段categ_id定义中,default=_get_default_category_id是调试器发出的问题。它正在绕过以下行,
return self._context.get('categ_id') or self._context.get('default_categ_id')
书上说继承模型的访问权限在新模型中不可用?所以我也尝试覆盖该功能,但它没有用(这甚至可能吗,因为这是委托?)
任何指示都会有所帮助。 谢谢!
请注意,字段 categ 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函数。即指定类别为paper
经过更多研究,更新 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
不过,如果纸张不存在,仍然需要进行错误检查。将其指向产品模板 'All' 默认值。
正在委托产品模板继承。在窗体视图中,我放置字段 categ_id。这默认为 'All',我希望它默认指向不同的类别。我尝试了以下方法,
<field name="categ_id" domain="[('name', '=', 'Paper')]"/>
成功将下拉列表过滤为我想要的类别,但 'All' 仍显示为默认类别。
接下来,我尝试将上下文放在 window 操作中,并将字段设置为
context="{'default_categ_id':%(pse.product_category_materials_paper)d}"
context="{'default_categ_id':'Paper'}"
context="{'default_categ_name':'Paper'}"
字段categ_id定义中,default=_get_default_category_id是调试器发出的问题。它正在绕过以下行,
return self._context.get('categ_id') or self._context.get('default_categ_id')
书上说继承模型的访问权限在新模型中不可用?所以我也尝试覆盖该功能,但它没有用(这甚至可能吗,因为这是委托?)
任何指示都会有所帮助。 谢谢!
请注意,字段 categ 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函数。即指定类别为paper
经过更多研究,更新 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
不过,如果纸张不存在,仍然需要进行错误检查。将其指向产品模板 'All' 默认值。