1

我正在使用 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')

提前致谢。

4

1 回答 1

3

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')
于 2021-04-03T15:42:02.693 回答