如何在set_values方法odoo 14中保存one2many字段

问题描述

我正在使用 odoo 14 并在“res.config.settings”中添加了 one2many 字段。但是这个字段值在保存这个 res.config.settings 表单时显示为 false。

以下是我的代码:-

import multiprocessing as mp
import numpy as np
from functools import partial
import time

def formating(a,b):
    # Formating goes here
    x = np.sort(b);
    # digitize
    l = np.digitize(a,x)
    # output:
    result = np.bincount(l,weights=a)
    return result

# needed for Windows:
if __name__ == '__main__':
    Numbers = np.array([3,4,5,7,8,10,20])
    limit1 = np.array([0,2,12,15])
    limit2 = np.array([0,12])
    limit3 = np.array([0,15,22])

    TRIALS = 100

    # multiprocessing version 1 (using method map):
    # since first argument to formating is always the same:
    worker = partial(formating,Numbers)
    with mp.Pool(3) as pool:
        t = time.time()
        for _ in range(TRIALS):
            result1,result2,result3 = pool.map(worker,[limit1,limit2,limit3])
        elapsed = time.time() - t
    print(result1,result3,elapsed)

提前致谢。

解决方法

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