Bonjour,

J'ai cette classe ci-dessous :

class evol_emplacement(ModelSQL, ModelView):
    u'Évolution d\'un emplacement'
    __name__ = 'cg.evol_emplacement'
    _rec_name = 'date'

    nature = fields.Many2One(
            'cg.nature',
            string = u'Nature',
            help=u'Nature de l\'emplacement',
        )
    diametre = fields.Integer(
            string = u'Diamètre souche',
            help=u'Diamètre de la souche',
            states={'invisible': Not(Equal(Eval('nature',0),4))},
            on_change_with=['nature'],
            depends=['nature']
        )

    def on_change_with_diametre(self, name=None):
        if self.nature is not None:
            if self.nature.code == 'SOU':                
                return self.diam

    diam = fields.Function(
            fields.Integer(string=u'Diam'),
            'get_diam'
        )

    def get_diam(self, ids):
        if self.emplacement is not None:            
            return self.emplacement.arbre[-1].evolution[-1].diamtronc


le champ function diam m'affiche bien ce que je veux, c'est à dire la bonne 
valeur. Par contre je n'arrive pas à mettre à jour l'attribut diametre à la 
valeur de diam si nature = 'SOU'. Je dois avoir une erreur dans 
on_change_with_diametre mais je ne trouve pas la bonne syntaxe, une 
solution ?
@+

Répondre à