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

2024-10-03 19:20:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个模块和一个计算字段,允许您从数据库中检索值。由于该字段是经过计算的,因此我无法使用该字段生成条件。我得到错误“无法搜索非存储字段rdv.rdv.nb\u 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)

谢谢你帮助我


Tags: nameselfidtruefieldsrequireddeinteger
1条回答
网友
1楼 · 发布于 2024-10-03 19:20:14

在decorator dependens中,您应该列出用于计算字段的字段,这样当字段发生更改时,odoo将监视这些字段,并重新计算字段。 从你的代码来看,我认为这可以做到

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

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

相关问题 更多 >