选择部门时如何获得员工清单?

时间:2017-04-26 06:04:44

标签: openerp odoo-8

我有一个名为department_ids的many2many字段和另一个名为employee_ids的many2many字段。我需要生成我在department_ids字段中选择的那些部门的员工列表。

2 个答案:

答案 0 :(得分:0)

为此,您可以对many2many字段使用相同的关系表。如果您对这两个字段使用相同的关系表,则任何字段中的任何更改都会反映在两者中。

Many2Many字段的语法是: -

    fields.Many2many(comodel_name=None, relation=None, column1=None, column2=None, string=None)

这里comodel_name是目标模型的名称, 和relation是在数据库中存储关系的表的名称。即它将在数据库中创建一个具有给定名称的表,该表存储关系, column1和column2是数据库中relation-table的列名。

谈论两个对象(表格)之间的往复关系。让我们假设我们的对象是教师和主题,我们想要一个来回的关系,即我们可以从主题 - 形式 - 视图添加教师到主题,我们也可以从教师形式视图向教师添加主题,无论是哪种方式必须反思双方。这样我们就可以为Many2many字段使用相同的关系表。有关更多信息,请参阅代码

class Teacher(models.Model):
    _name = "teacher.teacher"

    name = fields.Char(string='Teacher Name')
    subject_ids = fields.Many2many('subject.subject', 'teacher_sub_rel', 'subject_id', 'teacher_id', string='Teachers')

class Subject(models.Model):
    _name = "subject.subject"

    name = fields.Char(string='Subject Name')
    teacher_ids = fields.Many2many('teacher.teacher', 'teacher_sub_rel', 'teacher_id', 'subject_id', string='Subject')

希望这有帮助。

答案 1 :(得分:0)

如果您的部门模型与员工employee_ids有一个one2many,请尝试:

@api.onchage('department_ids')
def onchage_department(self):
        """
            new api support this now
        """
        if self.department_ids:                        # this is o2m of departement
            self.employee_ids = self.department_ids.mapped('employee_ids') 
        else:
            self.employee_ids = False