Odoo 12 我无法更改计算字段的值

Odoo 12 I can't change the value of the calculated field

我创建了一个模块和一个计算字段,允许您从数据库中检索值。由于该字段是计算出来的,所以我不能使用该字段来制定条件。我收到错误“无法搜索非存储字段 rdv.rdv.nb_rdv。”。为了解决这个问题,我想使用 store=True 存储字段的值,但默认值为 0 并且不会改变。

这是我的字段:

projet_terminer_id = fields.Many2one('op.course',string='Projet', required = True )
name_student_id = fields.Many2one('res.users', 'Etudiant',  required=True )
date_rdv = fields.Datetime('Date de RDV', required=True)
demandeur_rdv = fields.Integer('Demandeur de RDV', default=lambda self: self.env.uid, readonly=True )
nb_rdv = fields.Integer(string='Nombre de rdv', compute="nombre_de_rdv", readonly=True)
test_field = fields.Integer('Champ de Test')

这是我的函数:

@api.multi
@api.depends('nb_rdv')
def nombre_de_rdv(self):
    for record in self:
        id_student = record.name_student_id
        id_course = record.projet_terminer_id
        nb = self.env['rdv.rdv'].sudo().search_count([('name_student_id','=', id_student.id), ('projet_terminer_id', '=', id_course.id)])
        record.nb_rdv = int(nb)

感谢帮助我。

在 decorator depends 中,您应该列出用于计算字段的字段,这样 odoo 将在字段更改时监视这些字段,字段将被重新计算。 看你的代码我想这就可以了

      @api.depends('name_student_id', 'projet_terminer_id')

注意当你让字段存储时,Odoo会在你升级模块时计算旧记录的值但不会在下一个中做,这个操作只做一个时间。如果你有旧记录,你应该让字段store=False(这样写,不要只是删除store=True)升级模块然后再次存储并升级模块。但是对于新记录,您会注意到每当您更改其中一个字段的值时,该值将被重新计算