预期单例:sezonekip() 错误 pycharm

Expected singleton: sezonekip() error pycharm

这是我的代码,我遇到了单例错误。我正在尝试建立一个足球数据库,并在此功能中尝试根据比赛结果更新球队的位置。

    @api.multi
    @api.depends('gola_home', 'gola_away')
    def perditeso_piket(self):
        for record in self:
            if record.gola_home > record.gola_away:
                self.sezonekip_home_id.fitore += 1
                self.sezonekip_away_id.humbje += 1
            elif record.gola_home == record.gola_away:
                self.sezonekip_home_id.barazime += 1
                self.sezonekip_away_id.barazime+=1
            else:
                self.sezonekip_home_id.humbje += 1
                self.sezonekip_away_id.fitore+=1

你 using/programming 对了一半。循环 self 是安全的方法,因为它可能是一个多记录记录集。但是您稍后在增量中错过了使用 record

这些增量只不过是为字段设置一个新值。但是如果 self 是多记录记录集(不是单记录记录集,称为单例)Odoo 不允许直接 write/update。因此,只需在增量中将 self 替换为 record

    @api.depends('gola_home', 'gola_away')
    def perditeso_piket(self):
        for record in self:
            if record.gola_home > record.gola_away:
                record.sezonekip_home_id.fitore += 1
                record.sezonekip_away_id.humbje += 1
            elif record.gola_home == record.gola_away:
                record.sezonekip_home_id.barazime += 1
                record.sezonekip_away_id.barazime+=1
            else:
                record.sezonekip_home_id.humbje += 1
                record.sezonekip_away_id.fitore+=1

经常发生的错误。 当您想更改记录时,它会像您一样循环到自身,但所有其他字段也必须记录在案 例子

def method(self):
    for record in self:
        record.first_name = "Mark"
        record.last_name = "White"

这允许编辑该特定记录。比如当前注册表