1
votes

I am using odoo 14 and added one2many field in 'res.config.settings'. But this field value show false when save this res.config.settings form.

Below is my code:-

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')

Thanks in advance.

1
Did you implement the getter ? - Danimar Ribeiro
Hi Danimar, don't understand what you suggested? - PAWAN SHARMA

1 Answers

2
votes

The Odoo model res.config.settings can't have One2many fields or it shouldn't. Also, to display values in views, you must inherit the get_param method and add your field to the response.

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')