## 关系模型 来自模型的记录可能与另一个模型的记录有关。例如,一个销售订单记录与包含客户数据的客户记录有关,也与它的销售订单行记录有关。 练习 创建会话模型 对于模块公开学院,我们认为一个模型 *sessions*: 一个课程是一个课程的出现,在一个给定的时间,为一个给定的观众讲授。 创建一个模型 *sessions*. 一个会话有一个名字,一个开始日期,一个时间和一个座位的数目。添加一个动作和一个菜单项来显示它们。通过菜单项使新的模型可见。 1. 创建类 *Session* 在 `openacademy/models.py`. 2. 在会话对象中添加访问 `openacademy/view/openacademy.xml`. *openacademy/models.py* ~~~ python name = fields.Char(string="Title", required=True) description = fields.Text() class Session(models.Model): _name = 'openacademy.session' name = fields.Char(required=True) start_date = fields.Date() duration = fields.Float(digits=(6, 2), help="Duration in days") seats = fields.Integer(string="Number of seats") ~~~ *openacademy/views/openacademy.xml* ~~~ xml <!-- Full id location: action="openacademy.course_list_action" It is not required when it is the same module --> <!-- session form view --> <record model="ir.ui.view" id="session_form_view"> <field name="name">session.form</field> <field name="model">openacademy.session</field> <field name="arch" type="xml"> <form string="Session Form"> <sheet> <group> <field name="name"/> <field name="start_date"/> <field name="duration"/> <field name="seats"/> </group> </sheet> </form> </field> </record> <record model="ir.actions.act_window" id="session_list_action"> <field name="name">Sessions</field> <field name="res_model">openacademy.session</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> </record> <menuitem id="session_menu" name="Sessions" parent="openacademy_menu" action="session_list_action"/> </data> </openerp> ~~~ Note `digits=(6, 2)` 指定浮点数的精度:6是数字的总数,而2是逗号之后的数字。请注意,它导致在逗号之前的数字位数最多为4