Skip to Content
Menu
This question has been flagged
2 Replies
902 Views
Hello, how could I create a button that creates a new record in another model containing data from my current model? from my python module


Avatar
Discard
Best Answer

HI,
Utilize odoo create orm method:  Odoo Create ORM Method
Thanks

Avatar
Discard
Best Answer
This method will create a new record in the target model and populate its fields with data from the current model.

from odoo import models, fields

class YourModel(models.Model):
_name = 'your.model'
_description = 'Your Model'

name = fields.Char(string='Name')
description = fields.Text(string='Description')
related_field = fields.Many2one('other.model', string='Related Model')

def action_create_new_record(self):
for record in self:
# Create a new record in the other model
self.env['other.model'].create({
'name': record.name, # Pass data from the current model
'description': record.description,
'related_field': record.id,
})



Add a button to your form view in the XML file. Use the type="object" attribute to call a Python method when the button is clicked.


<record id="view_your_model_form" model="ir.ui.view">

    <field name="name">your.model.form</field>

    <field name="model">your.model</field>

    <field name="arch" type="xml">

        <form string="Your Model">

            <header>

                <button name="action_create_new_record" type="object" string="Create Record" class="oe_highlight"/>

            </header>

            <sheet>

                <!-- Your form fields go here -->

            </sheet>

        </form>

    </field>

</record>



When you click the "Create Record" button on the form view of your current model, a new record will be created in the target model using the data from the current record.


Best Regards,
NIZAMUDHEEN MJ
Accurates

Avatar
Discard
Related Posts Replies Views Activity
0
Oct 19
4100
7
Jul 19
41402
3
May 19
9784
2
Aug 18
11383
1
Mar 15
3873