odoores.config.settings構成モデルの保存の問題

odooでは、res.config.settings構成モデル(
自分で作成したフィールド)は、保存して開くときに値がありません。この状況は、char、Many2one、Selection、Boolean、Integerなどのより一般的なものです。 config_parameterで直接設定します。次に値を開いたときに、値が引き続き存在することを確認します。

ebay_zip_code = fields.Char(string="Zip", default='', config_parameter='ebay_zip_code')
ebay_gallery_plus = fields.Boolean("Gallery Plus", default='', config_parameter='ebay_gallery_plus')
...

しかし、多対多の場合、Many2manyフィールドのストレージ値はより厄介であり、現在達成する方法を見つけていますが、それは最も理想的ではありません。

直接コーディングする

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

    product_categ_id = fields.Many2many('product.category', string='产品类别', compute="_compute_product_categ_id", inverse="_inverse_product_categ_id")
    product_categ_str = fields.Char(config_parameter='crm.product_categ_str')

    @api.depends('product_categ_str')
    def _compute_product_categ_id(self):
        for setting in self:
            if setting.product_categ_str:
                setting_id = setting.product_categ_str.split(',')
                for rec in setting_id[0:len(setting_id)-1]:
                    product = self.env['product.category'].search([('id', '=', int(rec))])
                    setting.write({
    
    'product_categ_id':[(4, product.id, None)]})

    def _inverse_product_categ_id(self):
        str = ''
        for setting in self:
            if setting.product_categ_id:
                for rec in setting.product_categ_id:
                    str += '%s,' % rec.id
                setting.product_categ_str = str
...

_inverse_product_categ_idメソッドを使用してproduct_categ_id値のIDをproduct_categ_strに保存し、それを計算でproduct_categ_idに割り当てます。

率直に言って、値を別のフィールドに割り当ててから取り出すことです。

この方法は参照用です

おすすめ

転載: blog.csdn.net/weixin_42464956/article/details/107918089