J'ai les trois classes ci-dessous, et je voudrais lorsque je choisis des 
matériels dans le vue Work n'avoir que les outils correspondant aux 
matériels sélectionnés de l'attribut "materiel" de Work. je suppose que je 
dois ajouter un domain à l'attribut outil de la classe Work mais je ne 
trouve pas la solution, une idée ? J'ai bien tenté 
domain=[Eval('materiel'), 'In', Id('materiel')] mais ça ne marche pas.

class Outil(ModelSQL, ModelView):
    u'Outil'
    __name__ = 'timesheet.outil'

    materiel = fields.Many2One(
            'timesheet.materiel',
            string=u'Matériel',
            help=u'Matériel',
        )
    code = fields.Char(
            string = u'Code outil',
            required = True,
        )
    name = fields.Char(
            string = u'Libellé court de l\'outil',
            required = True,
        )        

class Materiel(ModelSQL, ModelView):
    u'Matériel'
    __name__ = 'timesheet.materiel'

    code = fields.Char(
            string = u'Code matériel',
            required = True,
        )
    name = fields.Char(
            string = u'Libellé court du matériel',
            required = True,
        )        
    outil = fields.One2Many(
            'timesheet.outil',
            'materiel',
            string=u'Outil',
            help=u'Outil',
        )

class Work(ModelSQL, ModelView):
    'Work'
    __name__ = 'timesheet.work'
    name = fields.Char(
            string=u'Name',
            help=u'Name',
            required=True,
        )

    materiel = fields.Many2Many(
            'timesheet.work-timesheet.materiel',
            'work',
            'materiel',
            string=u'Matériel',
            help=u'Matériel',
            states={
                    'invisible': Equal(Eval('type'),'activity')
                    },
        )
    outil = fields.Many2Many(
            'timesheet.work-timesheet.outil',
            'work',
            'outil',
            string=u'Outil',
            help=u'Outil',
            states={
                    'invisible': Equal(Eval('type'),'activity')
                    },
        )

Répondre à