# -*- coding: utf-8 -*- from odoo import api, fields, models class Category(models.Model): _name = 'persofin.category' _description = 'Personal Finance Category' _parent_name = 'parent_id' _parent_store = True _rec_name = 'complete_name' _order = 'complete_name' name = fields.Char( string = 'Name', index = True ) complete_name = fields.Char( string = 'Complete Name', compute = '_compute_complete_name', store = True ) parent_id = fields.Many2one( string = 'Parent Category', comodel_name = 'persofin.category', index = True, ondelete = 'cascade' ) parent_path = fields.Char( index = True ) child_id = fields.One2many( string = 'Child Categories', comodel_name = 'persofin.category', inverse_name = 'parent_id' ) @api.depends('name', 'parent_id.complete_name') def _compute_complete_name(self): for category in self: if category.parent_id: category.complete_name = '%s / %s' % ( category.parent_id.complete_name, category.name ) else: category.complete_name = category.name