odoo中模型类的多对多字段(Many2many)

Many2many字段的源码,以及字段属性的说明

只看Many2many的初始化的函数

 def __init__(self, comodel_name=Default, relation=Default, column1=Default,
                 column2=Default, string=Default, **kwargs):
        super(Many2many, self).__init__(
            comodel_name=comodel_name,
            relation=relation,
            column1=column1,
            column2=column2,
            string=string,
            **kwargs
        )
  • comodel_name:关联的模型的名称,必填
  • relation:存储关系的表的名称,该表不用自己创建,会在数据库中,odoo自己创建,而创建的表名就是relation的值,这个字段是可选的,但如果你没有指定relation时,会在数据库中创建一个你这个字段所在的表名下划线你关联模型的表名,注意:这块一般都加上relation,如果不加的话,默认生成的,通过下划线链接起来的生成的存储关系的表名会很长很长,后台就报错,说数据库表名太长。所以加上relation,并且保证relation的值是唯一值。

column1:存储关系的表的第一个字段名

column2:存储关系的表的第二个字段名

用法如下:

asset_category_ids = fields.Many2many('hrp_training.asset_category',
                                      relation='asset_depreciation_popup_relation_1',
                                      column1='col_1', column2='col_2',
                                      string='资产类别',
                                      domain="[('depreciation_type', '!=', 'no-depreciation'),('company_id', '=', company_id)]")

你可能感兴趣的:(odoo,odoo13,python,Many2many)