web-dev-qa-db-fra.com

Remplissage du champ Many2many (odoo 8)

Ce que j'ai fait:

J'ai un module avec 

myfield = fields.Many2one('res.partner', string="Graduate", domain=[('is_graduated', '=', True)])

Ensuite, j'ai une autre classe avec

_inherit = 'res.partner'
is_graduated = fields.Boolean("Graduated before?", default=False)
graduations = fields.Many2many('my_module.courses', string="Graduation courses")

Ce que je reçois:

myfield fonctionne bien, mais le champ graduations est vide. Si vous modifiez le profil user 1, vous pouvez ajouter des entrées dans le champ graduation en utilisant Add item, mais j’ai besoin de le remplir automatiquement.

Ce que j'attends:

Je suppose que chaque enregistrement pour lequel myfield est défini sur permet de dire user 1 sera visible dans le champ graduations lorsque vous ouvrez le profil user 1 Lorsque je crée un enregistrement et que je fixe la valeur myfield à user 1, cet enregistrement doit être visible dans le profil user 1 du champ graduations. Comment y parvenir?

17
hockeyman

Vous devez utiliser un onchange method pour myfield, puis à l'intérieur, vous devez renseigner le champ graduations, comme ceci:

@api.onchange('myfield'):
def _onchange_myfield(self):
    #fill graduations field here...
    ...
1
Juan Salcedo
_inherit = 'crm.phonecall'    
alarm_ids = fields.Many2many('calendar.alarm',string="Reminders") 
 set the alarm_ids of calendar.event model in create method of crm phonecall...
 alarm_ids = [(6,0,self.alarm_ids.ids)] 

_inherit = 'calendar.event'
 alarm_ids = fields.Many2many('calendar.alarm',string="Reminders") 
1
Bhautik

Vous pouvez réaliser comme ça.

Par exemple:

@api.one
@api.depends(
      #here you may define your depend field name
)
def _set_graduations(self):
    #here comes your logic which will collect ids
    #and than return it with self.field_name like

    self.graduations = [list_of_ids]


graduations = fields.Many2many('my_module.courses', string='Payments',
                                compute='_set_graduations') 

Si vous ne souhaitez pas utiliser @ api.depends , vous pouvez utiliser @ api.multi . Pour référence, vous pouvez consulter account module avec account_invoice.py file.

0
Bhavesh Odedra