Not getting records which created in One2many field on onchange in transient model

Viewed 1914

I am trying to create records in one2many field in one of my transient model on onchange of boolean field.

Eg.

Models

class test_model(models.TransientModel):
    _name ="test.model"

    is_okay = fields.Boolean("Okay?")
    lines = fields.One2many("opposite.model","test_id",string="Lines")

    @api.onchange('is_okay')
    def onchnage_is_okay(self):
        ids = []
        for l in range(5):
            record = self.env['opposite.model'].create({'name':str(l),'test_id':self.id})
            ids.append(record.id)
        self.lines = [(6,0,ids)]



class opposite_model(models.TransientModel):
    _name ="opposite.model"

    name = fields.Char("Name")
    test_id = fields.Many2one("test.model",string="Test Model")

View

<record id="view_form" model="ir.ui.view">
    <field name="name">view.form</field> 
    <field name="model">test.model</field>
    <field name="type">form</field>
    <field name="arch" type="xml">
        <form string="Test Model">
           <field name="is_okay" />
           <field name="lines" />
           <footer>
            <button name ="click_okay" string="Okay" type="object"/>
           </footer>
       </form>
   </field>
</record>

Now, problem is that when in check or uncheck the is_okay field it fills the records in the One2many field.

That is working fine.

But in my above view i have button which calls the method click_okay().

Eg.

@api.one
def click_okay(self):
    print self.lines

So, print statement gives me blank recordset. But, i can see the 5 records in the view when i am changing is_okay field.

I am not getting any idea how to get those lines in method?

Any response would be appreciated?

2 Answers
Related