Skip to Content
Menu
You need to be registered to interact with the community.
This question has been flagged
2 Odgovori
6486 Prikazi


  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
Opusti
Best Answer

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
Opusti
Best Answer

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
Opusti
Related Posts Odgovori Prikazi Aktivnost
0
nov. 23
1809
1
maj 18
5210
1
avg. 15
3526
2
dec. 24
6358
1
maj 24
2999