Adding dynamic relations using Reference fields

With relational fields, we need to decide beforehand the relation's target model (or comodel). But sometimes, we may need to leave that decision to the user and first choose the model we want and then the record we want to link to.

With Odoo, this can be achieved using Reference fields.

Getting ready

We will reuse the my_module addon module from Chapter 3, Creating Odoo Modules.

How to do it…

Edit the models/library_book.py file to add the new related field:

  1. We first add a helper method to dynamically build the list of selectable target models:
    from openerp import models, fields, api
    class LibraryBook(models.Model):
        # …
        @api.model
        def _referencable_models(self):
     models = self.env['res.request.link'].search([]) ...

Get Odoo Development Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.