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?
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...
...
_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")
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.