Lee*_*Dat 3 python openerp odoo-10
我必须在Windows中通过Odoo 10.0创建一个STudent Management模块.所以我想知道如何在Odoo(而不是Openerp)中建立一个"many2many"关系.我在互联网上搜索了很多解决方案,但我不清楚它们: 在这里输入图像描述
例如,有两个类(学生和课程)及其属性:
class Student(models.Model):
_name = "management.student"
IdStudent = fields.Integer() #primary key
Name = fields.Char()
Gender = fields.Char()
Address = fields.Char()
class Course(models.Model):
_name = "management.course"
IdCourse = fields.Integer() #primary key
course = fields.Char()
credit = fields.Integer()
professor = fields.Char()
Run Code Online (Sandbox Code Playgroud)
非常感谢你的帮助 !
Odoo中的Many2many关系最好描述,因为一个模型的许多记录可以链接到另一个模型的许多记录.要使用你的例子,许多班级可以有很多学生,学生可以有很多班级,因此很多.像许多人一样,如苹果只能只有一棵树或者一只一棵树,一棵树可以有很多苹果.
要为课程和学生定义many2many关系,您可以像这样在课程上创建一个字段.(取自文档)
attendee_ids = fields.Many2many('management.student', string="Attendees")
Run Code Online (Sandbox Code Playgroud)
在这种情况下,因为您没有指定可选参数column1,所以column2 Odoo将创建一个链接这两个模型的新关系表.该表将具有这样的名称.
management_course_management_student_rel
Run Code Online (Sandbox Code Playgroud)
但是,您可以为关系表指定自己的表名和列.
attendee_ids = fields.Many2many('management.student',relation='your_table_name', column1='course_id',column2='student_id', string="Attendees")
Run Code Online (Sandbox Code Playgroud)
这会产生一种叫表your_table_name有两列course_id和student_id
要确定学生在课程中的内容,Odoo将执行查询
SELECT student_id from your_table_name where course_id = x
Run Code Online (Sandbox Code Playgroud)
与找到学生正在学习的课程相反.
| 归档时间: |
|
| 查看次数: |
7967 次 |
| 最近记录: |