Odoo 10 中的多对多关系 (python)
Many2many relation in Odoo 10 (python)
我必须在 windows 中通过 Odoo 10.0 创建学生管理模块。所以我想知道如何在 Odoo(不是 Openerp)中建立 "many2many" 关系。我在网上搜索了很多解决方案,但我不太了解它们:
enter image description here
例如,下面有 2 个 类(学生和课程)及其属性:
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()
非常感谢您的帮助!
Odoo 中的 Many2many 关系是最好的描述,因为一个模型的许多记录可以链接到另一个模型的许多记录。使用您的示例,很多 类 可以有很多学生,而学生可以有很多 类,因此有很多。相对于 many2one,例如苹果只能有一棵树或 one2many 一棵树可以有很多苹果。
要为课程和学生定义多对多关系,您可以像这样在课程上创建一个字段。 (摘自docs)
attendee_ids = fields.Many2many('management.student', string="Attendees")
在这种情况下,因为您没有指定可选参数 column1,column2 Odoo 将创建一个新关系 table 链接两个模型。 table 将具有这样的名称。
management_course_management_student_rel
但是,您可以为关系 table 指定自己的 table 名称和列。
attendee_ids = fields.Many2many('management.student',relation='your_table_name', column1='course_id',column2='student_id', string="Attendees")
这将产生一个名为 your_table_name
的 table,其中包含两列 course_id
和 student_id
要确定课程中有哪些学生,Odoo 会执行查询
SELECT student_id from your_table_name where course_id = x
相反,查找学生正在修读的课程。
我必须在 windows 中通过 Odoo 10.0 创建学生管理模块。所以我想知道如何在 Odoo(不是 Openerp)中建立 "many2many" 关系。我在网上搜索了很多解决方案,但我不太了解它们: enter image description here
例如,下面有 2 个 类(学生和课程)及其属性:
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()
非常感谢您的帮助!
Odoo 中的 Many2many 关系是最好的描述,因为一个模型的许多记录可以链接到另一个模型的许多记录。使用您的示例,很多 类 可以有很多学生,而学生可以有很多 类,因此有很多。相对于 many2one,例如苹果只能有一棵树或 one2many 一棵树可以有很多苹果。
要为课程和学生定义多对多关系,您可以像这样在课程上创建一个字段。 (摘自docs)
attendee_ids = fields.Many2many('management.student', string="Attendees")
在这种情况下,因为您没有指定可选参数 column1,column2 Odoo 将创建一个新关系 table 链接两个模型。 table 将具有这样的名称。
management_course_management_student_rel
但是,您可以为关系 table 指定自己的 table 名称和列。
attendee_ids = fields.Many2many('management.student',relation='your_table_name', column1='course_id',column2='student_id', string="Attendees")
这将产生一个名为 your_table_name
的 table,其中包含两列 course_id
和 student_id
要确定课程中有哪些学生,Odoo 会执行查询
SELECT student_id from your_table_name where course_id = x
相反,查找学生正在修读的课程。