## 关系模型
来自模型的记录可能与另一个模型的记录有关。例如,一个销售订单记录与包含客户数据的客户记录有关,也与它的销售订单行记录有关。
练习
创建会话模型
对于模块公开学院,我们认为一个模型 *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