Bonjour, J'ai les classe suivantes :
class Site(ModelSQL, ModelView): 'Site' __name__ = 'site.site' plantCode = fields.Char( string=u'Plant Code', help=u'Plant Code', required=True ) protection = fields.Many2Many( 'site.site-site.area', 'site', 'area', string = 'Protected Area', help = 'Protected Area', readonly=True, on_change_with=['plantCode'] ) @staticmethod def on_change_with_protection(self): if self.plantCode is None: return '' else: cursor = Transaction().cursor cursor.execute('SELECT b.id ' 'FROM site_site a, site_area b ' 'WHERE a."plantCode"=%s AND ST_DWithin(a.geom,b.geom,1000) ' 'LIMIT 5' % self.plantCode) for area_line in cursor.fetchall(): cursor.execute('INSERT INTO site_area_rel (area, site) VALUES (%s,1);' % area_line) return '' class Area(ModelSQL, ModelView): u'Protected area' __name__ = 'site.area' ident = fields.Char( string=u'ID', help=u'International identifiant', required=True ) name = fields.Char( string=u'Area name', help=u'Area name', required=True ) class SiteArea(ModelSQL): 'Site - Area' __name__ = 'site.site-site.area' _table = 'site_area_rel' site = fields.Many2One( 'site.site', string='site', ondelete='CASCADE', required=True ) area = fields.Many2One( 'site.area', string='area', ondelete='CASCADE', required=True ) Lorsque je modifie dans la vue Site l'attribut 'plantCode', je voudrais que l'attribut 'protection' se mette à jour de la requête SQL du on_change_with_protection(self), mais cela ne fonctionne pas, je suppose que la syntaxe de la classe on_change est mauvaise mais je ne vois pas où ? Une aide ? Par avance merci. La requête SQL renvoie bien 5 valeurs exécutée séparément. @+