1

我在 one2many 字段中插入值的以下方法与 onchange 方法和带有依赖装饰器的 compute 方法一起使用。但我的要求并没有完全满足依赖装饰器。我的方法应该适用于视图负载。目前方法调用,我在终端上用 print 进行了测试,但 o2many 字段中的值仍然没有更新。

survey_user_input = fields.One2many('customer.survey', 'partner_id', compute='user_survey_output')

@api.one
def user_survey_output(self):
    print('TESSSSSSSSSSSSSSSSSSSS')
    Survey_user_input = self.env['survey.user_input']
    s_list = []
    value = {}
    for val in self:
        User_input = Survey_user_input.search(['|', ('partner_id', '=', val.id), ('email', '=', val.email)])
        for rec in User_input:
            data = {'partner_id': val.id,
                    'user_input_id': rec.id,
                    'survey_id': rec.survey_id.id,
                    'date_create': rec.date_create,
                    'deadline': rec.deadline,
                    'type': rec.type,
                    'state': rec.state,
                    }
            s_list.append((0, 0, data))
        value.update(survey_user_input=s_list)
        print('LLLLLLLLLLLLLLL', value)
        return {'value': value}

提前致谢。

4

1 回答 1

2

survey_user_input是一个计算字段,因此它必须将计算值分配给该字段。

如果它使用其他字段的值,则应使用depends()(该email字段在search方法中使用)指定这些字段。

@api.depends('email')
def user_survey_output(self):
    Survey_user_input = self.env['survey.user_input']
    for val in self:
        s_list = []
        # Loop body used to fill "s_list"
        val.survey_user_input = s_list
于 2019-12-02T09:35:26.550 回答