向模型中添加字段
- 我们将添加几个字段到
academy.partner
模型,包括添加一个布尔类型的字段instructor
。
在model文件夹下面创建一个文件名称为partner.py文件(即创建training_academy/models/partner.py文件),该文件包含一个用于对之前某个原来的类进行继承和扩展的类,具体代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
from odoo import api, fields, models
class Partner(models.Model): _inherit = 'res.partner'
op_type = fields.Selection([(1, '老师'), (2, '学生'), (3, '负责人')], string='类型') instructor = fields.Boolean(string="讲师") subject_ids = fields.One2many('academy.subject', 'partner_id', string="科目") tea_session_ids = fields.One2many('academy.session', 'teacher_id', string="教授课程") stu_session_ids = fields.Many2many('academy.session', string="参加课程")
|
类的属性_inherit
是关键字:它告诉Odoo,这个类是从类名为academy.partner
类继承。
注意这里不再需要_name
属性。因为这个属性已经从父模型(类)继承下来。
- 接下来在model文件夹里面还需要创建一个__init__.py文件,代码如下:
视图修改
1 2 3 4 5 6 7 8
| <field name="arch" type="xml"> <xpath expr="//field[@name='email']" position="after"> <field name="op_type" attrs="{'invisible': [('instructor', '=', True)]}"/> <field name="instructor" widget="checkbox"/> <field name="tea_session_ids" widget="many2many_tags"/> <field name="stu_session_ids" widget="many2many_tags"/> </xpath> </field>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <field name="arch" type="xml"> <xpath expr="//field[@name='category_id']" position="after"> <field name="op_type" attrs="{'invisible': [('instructor', '=', True)]}"/> <field name="instructor" widget="checkbox"/> </xpath> <xpath expr="//page[@name='sales_purchases']" position="after"> <page string="负责科目信息" attrs="{'invisible': [('op_type', '!=', 3)]}"> <field name="subject_ids" readonly="1"/> </page> <page string="教授课程信息" attrs="{'invisible': [('instructor', '=', False), ('op_type', '!=', 1)]}"> <field name="tea_session_ids" readonly="1"/> </page> <page string="参加课程信息" attrs="{'invisible': [('op_type', '!=', 2)]}"> <field name="stu_session_ids" readonly="1"/> </page> </xpath> </field>
|
- 最后,在__manifest.py__文件中加入视图文件
1 2 3 4
| 'data': [ ... 'views/partner_views.xml', ],
|
至此,就可以执行模块升级操作了。