как обновить список One2many со значением [ODOO 12] - PullRequest
2 голосов
/ 09 июля 2019

Я добавил метод, который проводит исследование учителя на уроках, затем он добавил во дворе (курс несколько уроков, каждый урок один учитель) моя проблема в том, что когда я нажимаю на кнопку, она не обновляет таблицу, он добавляет еще одну строку под каждым кликом

это мой код

    teacher_ids = fields.One2many('school.teacher', 'course_id', string='Teacher')

    def get_teachers (self):
        lesson = self.env['school.lesson'].search([])

        teacher_list = []  
        for rec in lesson:
            if rec.course_id.id == self.id:
                print(rec.teacher_id.name)

                teacher_list.append([0,0,{
                                    'teacher_name':  rec.teacher_id.id,  
                                    'lesson_id': rec.id,
                                }])
        print('teacher_list',teacher_list)
        self.write({'teacher_ids' : teacher_list})
        return 

Я обнаружил, что

(6, 0, [IDs])          replace the list of linked IDs (like using (5) then (4,ID) for each ID in the list of IDs)

но я не знаю, как используется в моем методе

Ответы [ 2 ]

1 голос
/ 13 июля 2019

Сначала поставить

self.teacher_ids = [(6, 0, [])]

затем обновите с

self.write({'teacher_ids' : teacher_list})

Будет работать:

def get_teachers (self):
    lesson = self.env['gestcal.lesson'].search([])

    teacher_list = [] 
    for rec in self.lesson_id:
        teacher_list.append([0,0,{
                                'teacher_name':  rec.teacher_id.id,  
                                }])
    print('teacher_list',teacher_list)
    self.teacher_ids = [(6, 0, [])]
    self.write({'teacher_ids' : teacher_list})
    return 
0 голосов
/ 09 июля 2019

вы не можете использовать (6, 0, [IDs]) в поле one2many.Так как официальный документ говорит.

  • (4, id, _) добавляет существующую запись id id в набор.Не может быть использован на One2many.
  • (5, _, _) удаляет все записи из набора, что эквивалентно явному использованию команды 3 для каждой записи.Не может быть использован на One2many.Не может использоваться в create ().

, вы должны заменить на этот

self.teacher_ids = self.env['your_teachers_model'].search([('id', 'in', [(rec.id) for rec in lesson])])
...