gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:46:44 25 4
gpt4 key购买 nike

我创建了一个模块和一个计算字段,允许您从数据库中检索一个值。由于该字段是计算出来的,我不能使用该字段来创建条件。我收到错误“ 无法搜索非存储字段 rdv.rdv.nb_rdv。”。为了解决这个问题,我想使用 存储字段的值商店=真但默认值为 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)

谢谢帮助我。

最佳答案

在装饰器中,您应该列出用于计算字段的字段,并且这样,当它们发生更改时,odoo 将监视这些字段,该字段将被重新计算。
从你的代码来看,我认为这会做到

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

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

关于python - Odoo 12 我无法更改计算字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59671786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com