The previous commit introduced an optimization to reduce the number of queries and fields fetched when we call `name_search`. But it works much better when the dependencies of `display_name` contain field names used in the calculation (on the same record/model). Then, to improve the performance and the cache coherency, add `depends` and `depends_context` depending on the custom `_compute_display_name`. Add only the first level of dependencies (never traverse relational field) because only these have a positive impact on the previous optimization and the cost is very low (see `modified`). About `depends_context`, we don't include `lang` because (when `_` is used by example) it is unlikely to get the same display_name in the same request with two different lang. closes odoo/odoo#122085 Related: odoo/documentation#4639 Related: odoo/enterprise#42599 Related: odoo/upgrade#4780 Signed-off-by: Raphael Collet <rco@odoo.com>
21 lines
775 B
Python
21 lines
775 B
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class FleetVehicleAssignationLog(models.Model):
|
|
_name = "fleet.vehicle.assignation.log"
|
|
_description = "Drivers history on a vehicle"
|
|
_order = "create_date desc, date_start desc"
|
|
|
|
vehicle_id = fields.Many2one('fleet.vehicle', string="Vehicle", required=True)
|
|
driver_id = fields.Many2one('res.partner', string="Driver", required=True)
|
|
date_start = fields.Date(string="Start Date")
|
|
date_end = fields.Date(string="End Date")
|
|
|
|
@api.depends('driver_id', 'vehicle_id')
|
|
def _compute_display_name(self):
|
|
for rec in self:
|
|
rec.display_name = f'{rec.vehicle_id.name} - {rec.driver_id.name}'
|