单个模型上的 Odoo 多个 many2many 或 One2many 字段
Odoo multiple many2many or One2many fields on single model
我继承了 project.project 模块,我在其中添加了多个 Many2many 字段:'Buyers'、'Sellers'、'Contacts' 等。
全部与res.partner有关。知道我何时将多个记录添加到其中一个字段,例如添加一些买家。这些买家也会自动填写在卖家、联系人字段中。
知道如何防止这种情况发生,我理解为什么会发生这种情况,因为 many2many 使用 project_id 和 res_partner_id 创建了 table 并且不知道它是否被创建来自卖家、买家或联系人字段。
提前致谢。
您是否为 Many2Many 字段指定了 table 名称?使用属性 "relation" 因为如果您一直传递相同的两个相关字段名称。默认情况下,table 始终使用相同的名称创建。
说明:
在你的情况下你有
sellers_ids = fields.Many2many(
comodel_name='res.partner',column1='partner_id', column2='project_id',
)
contact_ids = fields.Many2many(
comodel_name='res.partner',column1='partner_id', column2='project_id',
)
Odoo 将创建两个同名的 table。 "partner_id_project_id_rel"。在您在一个 Many2many 中创建记录的那一刻,相同的 table 将被更新。
但是如果你指定一个关系名。将创建两个具有不同名称的 table。像这样。
sellers_ids = fields.Many2many(relation='sellers_project_rel',
comodel_name='res.partner',column1='partner_id', column2='project_id',
)
contact_ids = fields.Many2many(relation='contact_project_rel',
comodel_name='res.partner',column1='partner_id', column2='project_id',
)
我继承了 project.project 模块,我在其中添加了多个 Many2many 字段:'Buyers'、'Sellers'、'Contacts' 等。 全部与res.partner有关。知道我何时将多个记录添加到其中一个字段,例如添加一些买家。这些买家也会自动填写在卖家、联系人字段中。
知道如何防止这种情况发生,我理解为什么会发生这种情况,因为 many2many 使用 project_id 和 res_partner_id 创建了 table 并且不知道它是否被创建来自卖家、买家或联系人字段。
提前致谢。
您是否为 Many2Many 字段指定了 table 名称?使用属性 "relation" 因为如果您一直传递相同的两个相关字段名称。默认情况下,table 始终使用相同的名称创建。
说明:
在你的情况下你有
sellers_ids = fields.Many2many(
comodel_name='res.partner',column1='partner_id', column2='project_id',
)
contact_ids = fields.Many2many(
comodel_name='res.partner',column1='partner_id', column2='project_id',
)
Odoo 将创建两个同名的 table。 "partner_id_project_id_rel"。在您在一个 Many2many 中创建记录的那一刻,相同的 table 将被更新。
但是如果你指定一个关系名。将创建两个具有不同名称的 table。像这样。
sellers_ids = fields.Many2many(relation='sellers_project_rel',
comodel_name='res.partner',column1='partner_id', column2='project_id',
)
contact_ids = fields.Many2many(relation='contact_project_rel',
comodel_name='res.partner',column1='partner_id', column2='project_id',
)