什么网站可以做TCGA病理分期,专业外贸制作网站,如何做网站登录界面,室内设计联盟下载好的#xff0c;我们用一个更通俗的例子来解释不同模块之间的模型关联#xff0c;场景是“学校和学生”的例子。
1. 场景介绍
假设我们有两个模块#xff1a;
学校模块 (school)#xff1a;用于管理学校信息。学生模块 (student)#xff1a;用于管理学生信息。
每个学…好的我们用一个更通俗的例子来解释不同模块之间的模型关联场景是“学校和学生”的例子。
1. 场景介绍
假设我们有两个模块
学校模块 (school)用于管理学校信息。学生模块 (student)用于管理学生信息。
每个学校可以有多个学生而每个学生只属于一个学校这就是一个典型的 Many2one 和 One2many 的关联场景。
2. 定义学校模型school 模块
在 school 模块中我们定义了 School 模型用来表示每个学校的信息。
# school/models/school.pyfrom odoo import models, fieldsclass School(models.Model):_name school.school_description Schoolname fields.Char(stringSchool Name)student_ids fields.One2many(student.student, school_id, stringStudents)name 字段是学校的名称。student_ids 是一个 One2many 字段表示该学校下所有的学生它通过 student.student 模型中的 school_id 字段来关联。
3. 定义学生模型student 模块
接下来在 student 模块中定义 Student 模型用来表示每个学生的信息并通过 Many2one 关联到 School 模型。
# student/models/student.pyfrom odoo import models, fieldsclass Student(models.Model):_name student.student_description Studentname fields.Char(stringStudent Name)school_id fields.Many2one(school.school, stringSchool)name 字段是学生的姓名。school_id 是一个 Many2one 字段用来关联到 school.school 模型这表示每个学生属于某个学校。
4. 模块之间的依赖
为了让 student 模块能够使用 school 模块中的 School 模型你需要在 student 模块的 __manifest__.py 文件中添加对 school 模块的依赖
# student/__manifest__.py{name: Student Management,version: 1.0,depends: [school], # 添加对 school 模块的依赖data: [views/student_views.xml,],
}这告诉 Odoo 系统student 模块依赖于 school 模块所以在安装 student 模块之前必须先安装 school 模块。
5. 视图展示
最后你可以在 student 模块中定义一个表单视图用来输入和查看学生信息包括学生所属的学校。
!-- student/views/student_views.xml --record idview_student_form modelir.ui.viewfield namenamestudent.form/fieldfield namemodelstudent.student/fieldfield namearch typexmlform stringStudentsheetgroupfield namename/field nameschool_id//group/sheet/form/field
/record在这个视图中用户可以选择学生所属的学校。
6. 总结
在这个例子中我们展示了如何在不同模块之间建立模型的关联
学校模块 (school) 定义了 School 模型包含一个 One2many 字段 student_ids用于表示学校下的多个学生。学生模块 (student) 定义了 Student 模型并使用 Many2one 字段 school_id 关联到 School 模型表示每个学生属于某个学校。