arleite
arleite

Reputation: 111

How to update a value from a field without refreshing the page Odoo

I'm creating a new sector on the settings page of my module, where I have a value and an update icon, which aims to update the field value when I click on the icon.

But when I call the function to execute the function, the page is reloaded and I never get the value, but the value is printed in the terminal with a logger, does anyone have any suggestions?

My XML code:

<button type="object" name="refresh_credits" class="btn-link" icon="fa-refresh"/>
<span class="btn-link">Credits</span>
<field name="new_credits"/>

My python code inside a class:

class ResConfigSettings(models.TransientModel):
    _inherit = 'res.config.settings'

    new_credits = fields.Integer()

    def refresh_credits(self):
        data_details_credits = self.env['show.credits'].content_credits_info()
        _logger.info(self.env['show.credits'].content_credits_info()[4])
        self.new_credits = data_details_credits[4]

Upvotes: 1

Views: 1388

Answers (1)

Gautam Bothra
Gautam Bothra

Reputation: 587

You have to override set_values and get_values method to update the values in settings. We cannot directly update the values in general settings.

Below is the example:

def set_values(self):
    super(ResConfigSettings, self).set_values()
    self.env['ir.config_parameter'].sudo().set_param('MODULE_NAME.new_credits',
                                                     self.new_credits)
    

@api.model
def get_values(self):
    res = super(ResConfigSettings, self).get_values()
    config = self.env['ir.config_parameter'].sudo()
    config_key = config.get_param('MODULE_NAME.new_credits')
    if config_zoom_key:
        res.update(
            field_name=config_key
        )

    return res

And also for better understanding, watch this video:

Add fields general settings

Upvotes: 1

Related Questions