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.
We will reuse the my_module
addon module from Chapter 3, Creating Odoo Modules.
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 openerp 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='_referencable_models...