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
)升级模块然后再次存储并升级模块。但是对于新记录,您会注意到每当您更改其中一个字段的值时,该值将被重新计算
我创建了一个模块和一个计算字段,允许您从数据库中检索值。由于该字段是计算出来的,所以我不能使用该字段来制定条件。我收到错误“无法搜索非存储字段 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
)升级模块然后再次存储并升级模块。但是对于新记录,您会注意到每当您更改其中一个字段的值时,该值将被重新计算