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に割り当てます。
率直に言って、値を別のフィールドに割り当ててから取り出すことです。
この方法は参照用です