Ogni impresa ha esigenze uniche: informazioni che non rientrano nel software standard. I campi personalizzati di Odoo servono proprio a questo, permettendoti di catturare dati specifici del tuo lavoro senza ricorrere a fogli Excel esterni.
Invece di adattare i processi aziendali a un modello dati rigido, Odoo ti consente di aggiungere nuovi campi praticamente ovunque — cliente, ordine di vendita, prodotto o fattura — e memorizzarli insieme agli altri dati nel sistema.
Questa guida ti dà gli elementi essenziali: che cosa sono i campi personalizzati, come sono gestiti internamente, come crearli con o senza codice e come usarli in modo che il tuo Odoo resti ordinato e semplice da mantenere.
Cosa sono i campi personalizzati in Odoo
Un campo personalizzato è semplicemente una colonna di dati che aggiungi a un modello Odoo esistente oltre ai campi forniti di serie. Serve a conservare una singola informazione legata a un record, esattamente come farebbe un campo nativo.
In Odoo i campi creati dall'utente portano il prefisso x_. Se li aggiungi con Odoo Studio avrai nomi come x_studio_priority_level, mentre chi sviluppa in azienda potrebbe usare un prefisso proprietario tipo x_miaazienda_cost_center per distinguerli.
Dal punto di vista dell'utente il campo personalizzato è indistinguibile da uno normale: appare nelle viste, nei filtri, nei gruppi e nei report e può essere compilato o consultato senza conoscere la parte tecnica.
Tipi di campo disponibili
Odoo mette a disposizione diversi tipi di campo per coprire la maggior parte dei requisiti informativi:
- Testo breve (Char): per codici o etichette brevi
- Testo lungo: note o descrizioni multilinea
- Intero (Integer): numeri senza decimali per conteggi o punteggi
- Decimale (Float): valori con virgola per misure o rapporti
- Monetario: importi con valuta collegata
- Booleano: casella che indica vero/falso
- Data / Data e ora: per date o timestamp
- Selezione: menu a tendina con opzioni predefinite
- Many2one: collegamento a un singolo record di un altro modello
- One2many: elenco di record correlati appartenenti a un altro modello
- Many2many: più collegamenti incrociati tra modelli
- Binario: allegati o file
- HTML: contenuto formattato
Scegliere il tipo giusto fin dall'inizio evita molte difficoltà: se l'insieme di valori è noto, preferisci una Selezione al campo libero per garantire coerenza e filtri affidabili.
Come funzionano
Odoo è costruito su un framework chiamato ORM (Object-Relational Mapping). Ogni vista e record corrisponde a un modello Python che mappa una tabella del database. Quando aggiungi un campo personalizzato, Odoo lo registra nell'ORM e crea automaticamente la colonna corrispondente in PostgreSQL.
Questo è il motivo della flessibilità del modello dati di Odoo: non stai modificando il codice sorgente, ma estendendo il modello tramite metadati memorizzati in ir.model.fields. All'avvio Odoo legge quella tabella e costruisce dinamicamente i campi.
Campi definiti in codice vs. campi creati nel database
Nello sviluppo classico di Odoo i campi vengono dichiarati nelle classi Python del modello usando il framework Odoo. È il metodo standard per definire campi con logica o da tracciare in versione.
Ad esempio, una definizione tipica in Python potrebbe essere:
I campi creati dall'interfaccia o tramite API seguono invece una via basata sui metadati: vengono salvati in ir.model.fields con state = 'manual' e caricati a runtime. Dal punto di vista funzionale generano la stessa colonna nel database e si comportano allo stesso modo per l'utente.
Campi relazionali e reciprocità
Quando aggiungi un campo Many2one che punta a un altro modello, Odoo si aspetta l'esistenza di un corrispondente One2many sull'altro modello. Non è solo una convenzione: è il modo con cui l'ORM mantiene e naviga le relazioni tra record.
Per esempio, se aggiungi x_project_id (Many2one verso project.project) su un ordine di vendita, è buona regola avere anche x_sale_order_ids (One2many verso sale.order) sul modello progetto, così la navigazione da progetto a ordini funziona correttamente nell'interfaccia.
Campi calcolati (Computed)
I campi calcolati in Odoo sono popolati automaticamente sulla base di altri campi invece di essere inseriti dall'utente. Si definisce una funzione Python collegata al campo tramite il parametro compute; questi campi sono in lettura e si aggiornano quando cambiano le dipendenze.
I campi computed sono molto utili ma richiedono sviluppo: non possono essere creati direttamente con Studio senza abilitare la modalità sviluppatore e scrivere del codice Python.
Esempi pratici per l'azienda
Nei progetti Odoo che seguiamo a Dasolo i campi personalizzati ricorrono spesso. Di seguito cinque scenari concreti tratti da flussi aziendali reali.
1. CRM: qualificare i lead con più dettaglio
Oltre ai dati di contatto e allo stadio, molte vendite richiedono informazioni di segmentazione. Un campo Selezione per il "Settore" o un Many2one verso un modello interno "Segmento di Mercato" aiuta i commerciali a catalogare i lead e offre report di pipeline più significativi.
2. Vendite: codici progetto interni
Chi fattura per progetto spesso ha bisogno di associare a preventivi e ordini un codice interno o un riferimento di budget. Un semplice campo Char "Codice Progetto" su sale.order rende questo tracciamento disponibile anche su documenti stampati e nei report.
3. Magazzino: attributi specifici del prodotto
Oltre agli attributi standard, certe aziende devono registrare specifiche tecniche proprie: durata garanzia (mesi), norma di certificazione, paese d'origine. Campi dedicati sul prodotto si integrano con le viste e vengono inclusi nei report di inventario.
4. Contabilità: allocazione per centro di costo e budget
Il reparto finance spesso deve etichettare fatture o registri con un centro di costo o voce di budget. Un Many2one su account.move verso un modello "Centro di Costo" consente analisi e filtri precisi senza rivoluzionare la contabilità analitica.
5. HR: dati di onboarding personalizzati
Il personale HR raccoglie informazioni specifiche per assunzioni e onboarding — tipi di contratto locali, categorie di competenze interne, assegnazioni flotte — che è utile conservare in hr.employee per ricerca e reportistica invece di tenere fogli separati.
Creare o personalizzare un campo
Ci sono due strade principali per creare campi personalizzati in Odoo: la scelta dipende da competenze tecniche e complessità del requisito.
Opzione 1: Odoo Studio (senza codice)
Odoo Studio è la soluzione più rapida per gli utenti non tecnici. Con Studio attivo puoi aggiungere un campo a una vista in pochi clic:
- Apri l'app e la tipologia di record dove vuoi aggiungere il campo (per esempio il form dell'ordine di vendita)
- Attiva la modalità di modifica di Studio cliccando l'icona matita
- Trascina il tipo di campo desiderato dal pannello sinistro sulla form
- Imposta l'etichetta, il nome tecnico e le proprietà aggiuntive
- Salva ed esci da Studio
Studio registra il campo in ir.model.fields con il prefisso x_studio_ e lo inserisce nella vista senza dover riavviare il server. È l'approccio consigliato per campi semplici senza logica personalizzata.
Opzione 2: personalizzazione tecnica tramite API
Per progetti di personalizzazione più strutturati, i campi si possono creare programmaticamente via API XML-RPC o con un modulo Python. Questa via è indicata per campi calcolati, filtri complessi o quando serve tenere tutto sotto controllo versione.
Con le API si può, ad esempio, creare un campo di tipo selezione su sale.order in modo automatizzato:
Questo tipo di processo rientra nelle pratiche standard per chi gestisce configurazioni remote o script di deploy automatizzati senza modificare file sorgente.
È una modalità utile nella guida tecnica per sviluppatori Odoo quando vuoi aggiungere campi in modo ripetibile e tracciabile.
Se invece scegli l'approccio full Python, dichiari i campi nella classe modello e li distribuisci come modulo Odoo: la soluzione più sostenibile per campi duraturi e aggiornabili durante gli upgrade.
Aggiungere il campo alla vista
Creare la colonna non mostra automaticamente il campo nelle viste: devi inserirlo manualmente nel form o nelle liste. Con Studio questo avviene durante la creazione; con sviluppo tecnico modifichi il XML della vista o erediti la vista per iniettare il campo nella posizione desiderata.
Buone pratiche
I campi personalizzati sono facili da aggiungere, ma senza una strategia si finisce con una base dati confusa. Ecco le pratiche che mantengono ordine e manutenibilità.
Preferire le Selezioni al testo libero quando possibile
Se i valori possibili sono noti, usa una Selezione invece di un Char: il testo libero genera varianti incoerenti ("Cliente", "cliente", "CL") che rovinano filtri e report. Un menu a tendina impone la coerenza in modo semplice.
Dare nomi chiari e coerenti ai campi
Il nome tecnico (x_project_type) deve descrivere il contenuto, non la posizione sulla form. Nomi vaghi come x_field_1 diventano incomprensibili nel tempo. Adotta una convenzione e documenta lo scopo di ogni campo.
Non sovraccaricare i modelli nativi
Aggiungere troppi campi a sale.order è spesso un segnale che serve un modello dedicato. Se un gruppo di campi rappresenta una nuova entità (progetto, contratto, certificazione), crea un modello custom e collegalo con un Many2one.
Testare sempre su un database di staging
Prima di intervenire in produzione, prova su una copia dell'istanza. Sebbene la creazione di campi sia generalmente sicura, errori di modello o tipo possono richiedere interventi manuali; l'ambiente di staging consente di individuarli presto.
Documentare i campi personalizzati
Tieni traccia di ogni campo che aggiungi: modello, nome tecnico, finalità e richiedente. Le istanze Odoo accumulano campi col tempo; senza documentazione diventa impossibile capire quali siano ancora utili.
Usare lo strumento giusto per la logica calcolata
Se il valore dipende da altri campi, implementalo come campo calcolato invece di farlo inserire manualmente dagli utenti. Eviterai incongruenze e ridurrai gli errori di inserimento; la funzionalità è ben supportata nella documentazione tecnica Odoo.
Errori comuni da evitare
Anche i team esperti inciampano spesso negli stessi problemi con i campi personalizzati. Qui sotto i casi più frequenti.
Dimenticare il One2many quando si crea un Many2one
Errore tipico: aggiungere un Many2one su A verso B senza creare il corrispondente One2many su B. Così la navigazione dalla parte opposta non funziona e gli utenti non vedono i record correlati. Crea sempre entrambe le estremità della relazione.
Cancellare un campo che contiene dati
Eliminare un campo rimuove definitivamente la colonna e tutti i dati associati: non esiste un undo. Se c'è anche un solo dubbio sull'utilità futura dei dati, è meglio nascondere o archiviare il campo anziché cancellarlo.
Creare campi direttamente in produzione
Intervenire su un database live senza test preventivi è rischioso anche per modifiche semplici: se la vista è mal configurata gli utenti riceveranno errori. Validare sempre le modifiche in ambiente di test.
Conflitti di naming con campi standard
Odoo rifiuta nomi duplicati sullo stesso modello, ma è facile creare un campo che vada in conflitto con uno introdotto da un futuro modulo. Usare un prefisso aziendale (es. x_miaazienda_) riduce molto questo rischio.
Aggiungere campi alla vista senza considerare l'UX
Non tutto quello che si può mettere in una form dovrebbe esserci di default: form sovraccariche rallentano gli utenti. Se un campo è rilevante solo in certi casi, mettilo su una tab separata o rendilo visibile solo con regole di dominio.
Mescolare campi Studio e campi tecnici senza strategia
Combinare personalizzazioni fatte con Studio e tramite codice senza un piano può portare a campi duplicati o naming contrastanti. Definisci da subito una strategia: Studio per le modifiche no-code e codice per la logica complessa, oppure codice per tutto.
Conclusione
I campi personalizzati sono uno degli strumenti più semplici ed efficaci per adattare Odoo al tuo lavoro: non richiedono modifiche al codice sorgente, si integrano con la piattaforma e danno agli utenti i dati precisi di cui hanno bisogno.
La regola d'oro è pianificare prima di costruire: scegli il tipo giusto, dai nomi chiari, rispetta le regole relazionali e documenta il lavoro. Un'architettura dei campi ben progettata rende la tua istanza Odoo più semplice da mantenere e più pronta a crescere con l'azienda.
Sia che tu usi Odoo Studio per interventi rapidi o moduli Python per personalizzazioni strutturate, i principi rimangono gli stessi: abbina il campo al dato, mantieni il modello pulito e testa prima di andare in produzione.
Da Dasolo assistiamo le aziende nell'implementazione, personalizzazione e ottimizzazione di Odoo per farlo aderire ai processi reali. Se ti servono pochi campi extra o un modulo custom completo, il nostro team può affiancarti.
Contattaci per una consulenza sulla tua istanza Odoo: valutiamo insieme la soluzione più pulita e sostenibile per le tue esigenze.