我必须在Windows中通过 Odoo 10.0 创建一个STudent管理模块。所以我想知道如何在Odoo(而不是Openerp)中建立一个“many2many”关系。我在互联网上搜索了很多解决方案,但我不清楚它们: enter image description here
例如,有两个类(学生和课程)及其属性:
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()
非常感谢你的帮助!
答案 0 :(得分:6)
Odoo中的Many2many关系最好描述,因为一个模型的许多记录可以链接到另一个模型的许多记录。要使用你的例子,许多班级可以有很多学生,学生可以有很多班级,因此很多。像许多人一样,如苹果只能只有一棵树或者一只一棵树,一棵树可以有很多苹果。
要为课程和学生定义many2many关系,您可以像这样在课程上创建一个字段。 (取自docs)
attendee_ids = fields.Many2many('management.student', string="Attendees")
在这种情况下,因为您没有指定可选参数column1,所以column2 Odoo将创建一个链接两个模型的新关系表。该表将具有这样的名称。
management_course_management_student_rel
但是,您可以为关系表指定自己的表名和列。
attendee_ids = fields.Many2many('management.student',relation='your_table_name', column1='course_id',column2='student_id', string="Attendees")
这将生成一个名为your_table_name
的表,其中包含两列course_id
和student_id
要确定学生在课程中Odoo会执行查询
SELECT student_id from your_table_name where course_id = x
与找到学生正在学习的课程相反。