如何在 set_values 方法 odoo 14 中保存 one2many 字段
Posted
技术标签:
【中文标题】如何在 set_values 方法 odoo 14 中保存 one2many 字段【英文标题】:How to save one2many field in set_values method odoo 14 【发布时间】:2021-06-29 14:30:12 【问题描述】:我正在使用 odoo 14 并在“res.config.settings”中添加了 one2many 字段。但是这个字段值在保存这个 res.config.settings 表单时显示为 false。
下面是我的代码:-
class ProjectResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
hide_export_field = fields.One2many('export.hide', 'res_id', string='Hide Field')
def set_values(self):
super(ProjectResConfigSettings, self).set_values()
IrDefault = self.env['ir.default'].sudo()
IrDefault.set('res.config.settings', 'hide_export_field', self.hide_export_field.ids)
class ExportHideFields(models.Model):
_name = "export.hide"
res_id = fields.Integer(string="Resend wizard")
model_ids = fields.Many2one('ir.model', string='Model')
field_for_hide = fields.Many2many('ir.model.fields', string='Field For Hide')
提前致谢。
【问题讨论】:
你实现了getter吗? 嗨 Danimar,不明白你的建议? 【参考方案1】:Odoo 模型 res.config.settings
不能有 One2many 字段,或者它不应该。此外,要在视图中显示值,您必须继承 get_param
方法并将您的字段添加到响应中。
from ast import literal_eval
class ProjectResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
hide_export_field = fields.Many2many('export.hide', string='Hide Field')
@api.model
def get_values(self):
res = super(ProjectResConfigSettings, self).get_values()
get_param = self.env['ir.config_parameter'].sudo().get_param
hide_export_field = get_param('hide_export_field', '[]')
hide_export_field = [(6, 0, literal_eval(hide_export_field))]
res.update(hide_export_field=hide_export_field)
return res
def set_values(self):
res = super(ProjectResConfigSettings, self).set_values()
set_param = self.env['ir.config_parameter'].sudo().set_param
set_param('hide_export_field', self.hide_export_field.ids)
return res
class ExportHideFields(models.Model):
_name = "export.hide"
res_id = fields.Integer(string="Resend wizard")
model_ids = fields.Many2one('ir.model', string='Model')
field_for_hide = fields.Many2many('ir.model.fields', string='Field For Hide')
【讨论】:
嗨@Tiki,感谢您的回复。我试过了,但它不起作用。 它在 many2many 中运行良好。但是为什么要求与one2many有关。我们可以有这样的选项:IrDefault.set('export.hide', 'hide_export_field', self.hide_export_field.ids)以上是关于如何在 set_values 方法 odoo 14 中保存 one2many 字段的主要内容,如果未能解决你的问题,请参考以下文章