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 ?
@+