3

我必须在 Windows 中通过Odoo 10.0创建一个 STudent 管理模块。所以我想确切地知道如何在 Odoo(不是 Openerp)中建立“many2many”关系。我在网上搜索了很多解决方案,但不是很清楚: 在此处输入图片描述

例如,有 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()

非常感谢你的帮助 !

4

1 回答 1

6

Odoo 中的 Many2many 关系最好被描述为一个模型的许多记录可以链接到另一个模型的许多记录。使用您的示例,许多课程可以有很多学生,学生可以有很多课程,因此 many2many。与 many2one 相对,例如一棵苹果只能有一棵树,或者 one2many 一棵树可以有很多苹果。

要为课程和学生定义多对多关系,您可以像这样在课程上创建一个字段。(取自文档

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

相反,找到学生正在修读的课程。

于 2017-02-14T05:00:57.663 回答