如何在不刷新页面的情况下更新字段的值 Odoo

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

我正在模块的设置页面上创建一个新扇区,其中有一个值和一个更新图标,目的是在我单击该图标时更新字段值。

但是当我调用函数执行函数时,页面被重新加载,我从来没有得到值,但是这个值是用记录器打印在终端上的,有人有什么建议吗?

我的XML代码:

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

我的 python 代码在 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]

您必须覆盖 set_values 和 get_values 方法才能更新设置中的值。我们无法直接更新常规设置中的值。

示例如下:-

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

为了更好地理解,请观看此视频:- Add fields general settings

我希望这是您问题的答案,并有助于更新值。