Outils pour utilisateurs

Outils du site


erp:odoo12:arborescence

Structure Arborescente

Product Categories

Je me suis basé sur le modèle existant dans Odoo.

Il s'agit du modèle product.category défini dans ./addons/product/models/product.py

Propriétés du modèle

_name persofin.category Nom du modèle
_parent_name parent_id Nom du champ indiquant l'enregistrement parent
_parent_store True
_rec_name complete_name
_order complete_name Nom du champ utilisé pour le tri de l'arbre

Champs du modèle

name Nom de la catégorie
complete_name Nom complet Calculé par _compute_complete_name
parent_id Enregistrement parent Many2one
parent_path Liste d'IDs des parents Chemin complet sous la forme x/y/z/
child_id Enregistrements enfants One2many

Exemple de liste

Contenu de la table

Code du modèle

models/category.py
# -*- 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
erp/odoo12/arborescence.txt · Dernière modification: 2020/11/21 11:02 (modification externe)