繁体   English   中英

Odoo 10-搜索方法

[英]Odoo 10 - Search method

我不明白为什么在这里起作用:

# Fonction qui récupère la valeur du champs booléen inscription de l'année précédente
    @api.depends('half_pension')
    def _retrieve_halfpension_previous(self):
        records = self.env['ecole.partner.school'].search([])
        for record in records:
            record.half_pension_previous = record.half_pension

在这里,我有一个预期的单例错误:

# Fonction qui récupère la valeur du champs booléen inscription de l'année précédente
    @api.depends('half_pension')
    def _retrieve_halfpension_previous(self):
        records = self.env['ecole.partner.school'].search([('id', '<', self.id)])
        for record in records:
            record.half_pension_previous = record.half_pension

为什么呢

谢谢

该错误是因为您使用的是self.id ,其中self是包含多个值的记录集。 通常,要解决此问题,您需要对自身的记录集进行迭代以访问每个记录字段,如下所示:

@api.depends('half_pension')
def _retrieve_halfpension_previous(self):
    for rec in self:
        records = self.env['ecole.partner.school'].search([('id', '<', rec.id)])
        for record in records:
            record.half_pension_previous = record.half_pension

但是在这种情况下,可以自行找到记录的最大id,以便仅在一次搜索中使用它,例如:

@api.depends('half_pension')
def _retrieve_halfpension_previous(self):
    max_id = max([rec.id for rec in self])
    records = self.env['ecole.partner.school'].search([('id', '<', max_id)])
    for record in records:
        record.half_pension_previous = record.half_pension

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM