.. _orm_genropy/tables/tabelle_gerarchiche: Tabelle Gerarchiche =================== Come gestire gerarchie di record -------------------------------- In alcuni casi può essere necessario tenere traccia, gestendo e visualizzando correttamente, di una "gerarchia" di record, ovvero di una struttura padre-figlio. Si pensi a tutti quei casi in cui non è sufficiente una gestione "piatta" dei record, ma è anzi preferibile stabilire una gerarchia, come ad esempio la *categorizzazione* di un catalogo prodotti. Per queste situazioni Genropy mette a disposizione uno strumento particolare, la Tabella Gerarchica, che ci permette di visualizzare in una struttura ad albero tutti i record contenuti nella tabella, e inoltre ci permette di gestirli facilmente consentendoci delle comode operazioni di trascinamento tra un livello e un altro della struttura. Come costruire una Tabella Gerarchica ------------------------------------- La Tabella Gerarchica è uno speciale tipo di :ref:`table` di Genropy, che permette di inserire e navigare tra i record sfruttando una visualizzazione gerarchica padre-figlio che mette in :ref:`relazione` tutti i record presenti. La tabella gerarchica si definisce con l'aggiunta dell'attributo ``hierarchical=True`` (o ``hierarchical='nome_colonna'``, utilizzando quindi una colonna specifica come criterio della gerarchia) ai :ref:`sysFields` :: class Table(object): def config_db(self, pkg): tbl = pkg.table('prodotto_tipo', pkey='id', name_long='!![it]Prodotto tipo', name_plural='!![it]Prodotto tipi', caption_field='hierarchical_descrizione') self.sysFields(tbl,hierarchical='descrizione', counter=True, df=True) tbl.column('descrizione' ,size=':50',name_long='!![it]Descrizione') Per la successiva visualizzazione ad albero della gerarchia sarà poi necessario nella Form della `risorsa th `_ specificare l'attributo ``hierarchical=True`` nel metodo ``th_options``:: def th_options(self): return dict(dialog_height='400px', dialog_width='600px', hierarchical=True) .. raw:: html
**Parametri:** +------------------------+------+--------------------------------------------------+ | Nome parametro | Tipo | Descrizione | +========================+======+==================================================+ |hierarchical |B |Indicando nei sysFields l'attributo | | | |hierarchical=True, la tabella verrà gestita come | | | |gerarchica. Si noti che è possibile in alternativa| | | |a True specificare un nome di una colonna (es: | | | |hierarchical='descrizione'), utilizzando così una | | | |colonna specifica come criterio della gerarchia | +------------------------+------+--------------------------------------------------+ |counter |B |Se specificato a True, le voci della gerarchia | | | |saranno ordinabili a piacimento tenendo premuto | | | |shift e trascinando nella posizione desiderata. | +------------------------+------+--------------------------------------------------+ .. sectionauthor:: Davide Paci