Adding dynamic relations using Reference fields
With relational fields, we need to decide beforehand the relation's target model (or comodel). However, 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 4,Creating Odoo Addon Modules.
How to do it...
Edit the models/library_book.py
file to add the new related field:
- We first add a helper method to dynamically build the list of selectable target models:
from odoo import models, fields, api class LibraryBook(models.Model): # ... @api.model def _referencable_models(self): models = self.env['res.request.link'].search([]) return [(x.object, x.name) for x in models]
- Then, we add the Reference field and use the previous function to provide the list of selectable models:
ref_doc_id = fields.Reference( selection...