Many2many多对多关系
一个属性可以有 多个 标签,一个标签也可以被分配给 多个 属性。例如,一个学生可以有多个老师,一个老师可以有多个学生。many2many 是一个双向多对多关系:一边的任何记录都可以与另一边的任意数量的记录相关联。
首先创建模型添加字段。
class traceability_tag(models.Model):
_name = 'traceability.tag'
_description = '产品标签'
name = fields.Char('标签', required=True)
创建视图,把字段渲染到视图中。
<record id="odoo_form_traceability_tag" model="ir.ui.view">
<field name="name">traceability.tag.form</field>
<field name="model">traceability.tag</field>
<field name="arch" type="xml">
<form string="表单">
<sheet>
<group>
<group>
<field name="name" />
</group>
<group>
</group>
</group>
<group>
</group>
</sheet>
</form>
</field>
</record>
<record id="odoo_tree_traceability_tag" model="ir.ui.view">
<field name="name">traceability.tag.tree</field>
<field name="model">traceability.tag</field>
<field name="priority">1</field>
<field name="arch" type="xml">
<tree string="列表">
<field name="name" />
</tree>
</field>
</record>
<record id="odoo_action_traceability_tag" model="ir.actions.act_window">
<field name="name">产品标签</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">traceability.tag</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
创建单据.
</p>
</field>
</record>
<menuitem action="odoo_action_traceability_tag" id="menu_traceability" sequence="0"/>
在模型中添加Manymany字段,并且渲染到视图中
tag_ids = fields.Many2many('traceability.tag', string='产品标签')
<record id="odoo_tree_traceability" model="ir.ui.view">
<field name="name">traceability.tree</field>
<field name="model">traceability</field>
<field name="priority">1</field>
<field name="arch" type="xml">
<tree string="列表">
<field name="name" />
<field name="number" />
<field name="date" />
<field name="tag_ids" />
</tree>
</field>
</record>
给新建的模型添加权限。
最后重启服务器,查看我们的Many2many关系。
欢迎加群一起讨论DTCloud 4实施开发。
群号:557402829