Ceci est mon code et j'obtiens une erreur singleton. J'essaie de créer une base de données de football et dans cette fonction, j'essaie de mettre à jour la position des équipes en fonction du résultat d'un match.

    @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
1
Lirdi 26 août 2020 à 10:39

2 réponses

Meilleure réponse

Vous l'utilisez / programmez à moitié correct. Le bouclage sur self est le moyen le plus sûr car il pourrait s'agir d'un jeu d'enregistrements multi-enregistrements. Mais vous avez manqué d'utiliser record plus tard dans vos incrémentations.

Ces incrémentations ne sont rien de plus que la définition d'une nouvelle valeur pour les champs. Mais si self est un jeu d'enregistrements multi-enregistrements (pas un jeu d'enregistrements à un seul enregistrement, appelé singleton), Odoo n'autorise pas une écriture / mise à jour directe. Remplacez simplement self par record dans vos incrémentations:

    @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
0
CZoellner 26 août 2020 à 18:03

Une erreur qui arrive souvent. Lorsque vous souhaitez modifier un enregistrement, il passe à auto, comme vous l'avez fait, mais tous les autres champs doivent également figurer sur l'exemple d'enregistrement

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

Cela permet de modifier cet enregistrement spécifique. Par exemple, le registre actuel

0
Plaoo 27 août 2020 à 06:56