Understanding Active ID in Odoo

Abid Patel
14-Oct-2024 Updated : 14-Oct-2024

Learn how to use active_id in Odoo to fetch and manipulate the active record dynamically in forms, wizards, and server actions.

Understanding Active ID in Odoo

In Odoo, one of the most commonly used concepts when developing or customizing is the active_id. This parameter is often utilized to get the ID of the active record in a form or view. By using active_id, developers can fetch and process data from the currently active record, allowing for dynamic functionality in forms, wizards, and server actions. In this blog, we will dive deep into what active_id is and how it can be used in Odoo development.

What is Active ID in Odoo?

The active_id in Odoo represents the ID of the currently active record. It is typically passed within the context of a view or form and is used in Python methods to retrieve the current record’s information. This is especially useful in scenarios where a user is working on a specific record, and you need to programmatically fetch or manipulate data from that particular record. Along with active_id, active_ids (for multiple records) is also commonly used in Odoo development.

How to Use Active ID in Odoo

To make use of the active_id in Odoo, it is often retrieved from the context. Let’s take an example of how you can use the active_id to get the active record in a Python method:

python
from odoo import models, api

class CustomModel(models.Model):
    _name = 'custom.model'

    @api.model
    def process_active_record(self):
        # Retrieve active_id from the context
        active_id = self.env.context.get('active_id')
        
        # Fetch the record using the active_id
        if active_id:
            record = self.env['custom.model'].browse(active_id)
            # Perform operations on the record
            record.do_something()

In this example, we access the active_id from the context using self.env.context.get('active_id'). We then use the browse method to fetch the record based on the retrieved active_id.

Example: Using Active ID in a Wizard

One of the most common use cases for active_id is in wizards. When a user interacts with a wizard in Odoo, the active_id can be used to reference the record the user was working on before launching the wizard. Here’s an example of how to use active_id in a wizard:

python
from odoo import models, api, fields

class CustomWizard(models.TransientModel):
    _name = 'custom.wizard'

    related_record = fields.Many2one('custom.model', string="Related Record")

    @api.model
    def default_get(self, fields):
        res = super(CustomWizard, self).default_get(fields)
        active_id = self.env.context.get('active_id')
        if active_id:
            res['related_record'] = active_id
        return res

In this example:

  • self.env.context.get('active_id') is used to get the ID of the active record from the context.
  • ▹ The default_get method assigns the active_id to the related_record field in the wizard.

Active ID vs Active IDs

While active_id retrieves the ID of a single active record, active_ids is used to retrieve a list of IDs when multiple records are selected. Both are commonly used in different scenarios depending on whether you are working with a single record or multiple records at once.

Conclusion

The active_id in Odoo is a key tool for developers when dealing with forms, wizards, and server actions. It allows for efficient and dynamic interactions with the currently active record, making it easier to build responsive and flexible applications. Whether you are working with a single record using active_id or multiple records using active_ids, this feature enhances the flexibility of your Odoo development process.

For more detailed information on Odoo menu customization, refer to the Free web snippets.

Make a Comment

Your email address will not be published. Required fields are marked *