我有一个名为department_ids的many2many字段和另一个名为employee_ids的many2many字段。我需要生成我在department_ids字段中选择的那些部门的员工列表。
答案 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