Passa al contenuto
Menu
È necessario essere registrati per interagire con la community.
La domanda è stata contrassegnata
2 Risposte
6485 Visualizzazioni


  How do I automatically retrieve the data from a field which is already stored in the database so that it can be used the autofill another many2one field which is new ? for example

I have a course_id field which already has Its Stored data in the database

course_id = fields.Many2one ('op.course', 'Course') 

Then i created another new program_id field inside the same class

program_id = fields.Many2one ('op.program', 'Program', domain = "[('course_id', '=', course_id)]")

 When i tried the onchange method, it works perfectly

@ api.onchange ('course_id') 
        def onchange_course (self): 
                    prog_id = false 
                   if self.course_id and self.course_id.program_id: 
                    prog_id = self.course_id.program_id.id 
                    self.program_id = prog_id 

But now i want program_id field to be updated automatically in the tree and form view  by using the course ids which are already stored. Am using Odoo version 12


Avatar
Abbandona
Risposta migliore

Hi! One way also is to use compute attribute in your fields declaration.

E.g.: 

program_id = fields.Many2one ('op.program', string='Program', domain = "[('course_id', '=', course_id)]"
            compute="_your_method_name")
@ api.depends('course_id') 
def _your_method_name(self): 
    for record in self:                                                         
        prog_id = false 
        if self.course_id and self.course_id.program_id: # just do your work around starting on these lines and you'll get want you want in no time 
           prog_id = record.course_id.program_id.id #map your values correctly here
           record.program_id = prog_id 

This will automatically update both your form and tree view for the referred field.

Hope it helps.

Avatar
Abbandona
Risposta migliore

Hello Brian,

You can also use the related field to get the value of program_id automatically.

try this code,

program_id = fields.Many2one ('op.program', related='course_id.program_id', string='Program', domain = "[('course_id', '=', course_id)]")


Avatar
Abbandona
Post correlati Risposte Visualizzazioni Attività
0
nov 23
1809
1
mag 18
5210
1
ago 15
3526
2
dic 24
6358
1
mag 24
2999