Passa al contenuto

Campi Personalizzati in Odoo: Guida Completa

Scopri come estendere qualsiasi modello Odoo con campi personalizzati utilizzando Odoo Studio o Python, e perché è importante per la tua azienda
6 marzo 2026 di
Campi Personalizzati in Odoo: Guida Completa
Dasolo
| Ancora nessun commento

Ogni azienda è diversa. Il tuo team tiene traccia di informazioni che nessun software standard prevede, ed è esattamente qui che entrano in gioco i campi personalizzati in Odoo.


Invece di costringere i tuoi flussi di lavoro a adattarsi a un modello di dati rigido, Odoo ti consente di aggiungere nuovi campi a quasi qualsiasi record, che si tratti di un cliente, di un ordine di vendita, di un prodotto o di una fattura. Decidi quali dati catturare, e Odoo li memorizza insieme a tutto il resto.


Questa guida copre tutto ciò che devi sapere: cosa sono i campi personalizzati, come funzionano dietro le quinte, come crearli con o senza codice e come usarli in modo da mantenere la tua istanza Odoo pulita e manutenibile.

Che cos'è un campo personalizzato in Odoo


Un campo personalizzato è un campo del database che aggiungi a un modello Odoo esistente, oltre a ciò che è fornito di default. Memorizza un'informazione specifica legata a un record, esattamente come farebbe un campo nativo.


In Odoo, i campi personalizzati sono identificati dal prefisso x_. I campi creati tramite Odoo Studio utilizzano nomi come x_studio_priority_level, mentre i campi aggiunti programmaticamente potrebbero utilizzare un prefisso specifico per il tuo progetto, come x_dasolo_cost_center.


Dall'interfaccia utente, un campo personalizzato appare e si comporta esattamente come qualsiasi campo standard. Può apparire in moduli, viste elenco, filtri, opzioni di raggruppamento e report. Gli utenti che non conoscono l'aspetto tecnico non noteranno mai la differenza.


Tipi di Campo Disponibili

Odoo supporta un'ampia gamma di tipi di campo per campi personalizzati, coprendo la maggior parte delle esigenze di dati:

  • Testo (Char): Testo breve, come un codice di riferimento o un'etichetta
  • Testo Lungo: Testo libero su più righe per note o descrizioni
  • Intero: Numeri interi, utili per conteggi o punteggi
  • Decimale (Float): Numeri con decimali, per misurazioni o tassi
  • Monetario: Importo consapevole della valuta, collegato a un campo valuta
  • Booleano: Una casella di controllo vero/falso
  • Data / Data e Ora: Data del calendario o timestamp
  • Selezione: Un elenco a discesa fisso di opzioni
  • Many2one: Un collegamento a un singolo record in un altro modello
  • One2many: Un elenco di record correlati da un altro modello
  • Many2many: Record multipli collegati da un altro modello
  • Binary: Allegato di file
  • HTML: Contenuto di testo ricco

Scegliere il tipo di campo giusto fin dall'inizio evita molti problemi in seguito. Un campo di selezione è quasi sempre migliore di un campo di testo libero quando l'insieme dei valori possibili è noto in anticipo.

Come funziona il campo


Odoo è costruito su un framework chiamato Odoo ORM (Object-Relational Mapping). Ogni modulo, vista elenco e record che vedi nell'interfaccia è supportato da un modello Python che si mappa a una tabella del database. Quando aggiungi un campo personalizzato, Odoo lo registra nell'ORM e crea automaticamente la corrispondente colonna in PostgreSQL.


Questo è ciò che rende il modello dati di Odoo flessibile: non stai modificando il codice sorgente. Stai estendendo il modello attraverso uno strato di metadati memorizzato nella tabella ir.model.fields. Odoo legge quella tabella all'avvio e costruisce i campi dinamicamente.


Campi definiti nel codice vs. campi definiti nel database

Nello sviluppo Odoo standard, i campi sono definiti direttamente nelle classi modello Python utilizzando il framework Odoo. Una tipica definizione di campo appare così:


from odoo import models, fields

class SaleOrder(models.Model):
    _inherit = 'sale.order'

    cost_center = fields.Char(string='Centro di costo')

I campi personalizzati creati tramite l'interfaccia utente o API seguono un percorso diverso: sono memorizzati con state = 'manual' in ir.model.fields e caricati a runtime. Entrambi gli approcci producono una vera colonna del database e si comportano in modo identico dal punto di vista dell'utente.


Campi relazionali e reciprocità

Quando crei un campo personalizzato Many2one che punta a un altro modello, Odoo si aspetta un campo corrispondente One2many dall'altra parte. Non è solo una convenzione: è il modo in cui l'ORM di Odoo naviga nelle relazioni tra i record.


Ad esempio, se aggiungi un x_project_id (Many2one a project.project) su un ordine di vendita, dovresti anche aggiungere x_sale_order_ids (One2many di ritorno a sale.order) sul modello del progetto. Senza questo, la navigazione dal progetto ai suoi ordini collegati non è possibile attraverso l'interfaccia standard.


Campi personalizzati calcolati

I campi calcolati di Odoo sono campi il cui valore viene calcolato automaticamente in base ad altri campi, piuttosto che inserito dall'utente. Nelle personalizzazioni tecniche, definisci un metodo Python e lo colleghi al campo utilizzando il parametro compute. Questi campi sono di sola lettura e si aggiornano ogni volta che le loro dipendenze cambiano.


I campi calcolati sono potenti ma richiedono codice. Attualmente non possono essere creati tramite Odoo Studio senza la modalità sviluppatore e alcune conoscenze di Python.

Casi d'uso aziendali


I campi personalizzati appaiono in quasi ogni progetto Odoo su cui lavoriamo in Dasolo. Ecco cinque scenari comuni da flussi di lavoro aziendali reali.

1. CRM: Qualificare i lead in modo più preciso

I lead standard di Odoo catturano i dettagli di contatto e la fase del pipeline, ma molti team di vendita hanno bisogno di più. Un campo di selezione per "Settore del cliente" o un Many2one che collega a un modello interno "Segmento di mercato" consente ai rappresentanti di vendita di qualificare i lead più rapidamente e consente alla direzione di riportare sul pipeline per segmento.


2. Vendite: Monitorare i codici progetto interni

Le aziende che fatturano i clienti per progetto spesso devono allegare un codice progetto interno o un riferimento di budget a ciascuna quotazione o ordine di vendita. Un semplice campo Char chiamato "Codice progetto" su sale.order rende questo possibile senza un'integrazione completa della gestione dei progetti. Il campo appare sui documenti stampati e può essere utilizzato per filtrare e raggruppare gli ordini nei rapporti.


3. Inventario: Attributi specifici del prodotto

Oltre agli attributi standard del prodotto di Odoo, le aziende a volte devono monitorare specifiche tecniche uniche per il loro settore. Un produttore potrebbe aggiungere campi per "Periodo di garanzia (mesi)" (Intero), "Standard di certificazione" (Selezione) o "Paese di origine" (Many2one a res.country). Questi campi si integrano naturalmente con il modulo del prodotto e sono disponibili nei rapporti di inventario.


4. Contabilità: Budget e Allocazione del Centro di Costo

I team finanziari hanno spesso bisogno di contrassegnare fatture o registrazioni contabili con un centro di costo o una linea di budget. Un campo Many2one su account.move che punta a un modello personalizzato "Centro di Costo" consente un'allocazione dei costi dettagliata senza modificare la configurazione della contabilità analitica di Odoo. Filtri, tabelle pivot ed esportazioni rispettano tutti il campo immediatamente dopo la creazione.


5. HR: Dati di Onboarding Personalizzati

I dipartimenti HR raccolgono spesso dati durante l'onboarding che non si adattano ai campi standard dei dipendenti: tipi di contratto specifici per un paese, categorie di competenze interne o riferimenti all'assegnazione della flotta. I campi personalizzati su hr.employee mantengono queste informazioni all'interno di Odoo piuttosto che in un foglio di calcolo separato, rendendole ricercabili e riportabili.

Creazione o personalizzazione del campo


Ci sono due modi principali per creare campi personalizzati in Odoo. La scelta giusta dipende dalle tue risorse tecniche e da quanto complesso deve essere il campo.


Opzione 1: Odoo Studio (Nessun Codice)

I campi di Odoo Studio sono il percorso più veloce per gli utenti aziendali. Con Studio abilitato, puoi aggiungere un nuovo campo a qualsiasi vista in pochi clic:

  1. Apri l'app e il tipo di registrazione dove vuoi il campo (ad esempio, un modulo di ordine di vendita)
  2. Clicca sull'icona della matita per entrare in modalità di modifica di Studio
  3. Trascina un tipo di campo dal pannello sinistro sul modulo
  4. Imposta l'etichetta del campo, il nome tecnico e eventuali proprietà aggiuntive
  5. Salva e esci da Studio

Studio crea il campo in ir.model.fields con il prefisso x_studio_ e lo aggiunge direttamente alla vista. Non è necessaria alcuna distribuzione o riavvio del server. Questo è l'approccio consigliato per campi semplici che non richiedono logica personalizzata.


Opzione 2: Personalizzazione Tecnica tramite API

Per i team che lavorano a progetti di personalizzazione Odoo, i campi possono essere creati programmaticamente utilizzando l'API XML-RPC o scrivendo un modulo Python. Questo è il percorso giusto quando hai bisogno di campi calcolati, filtri di dominio complessi o campi che devono far parte di un codice sorgente controllato da versione.


Utilizzando l'API, la creazione di un campo di selezione personalizzato su un ordine di vendita appare così:


# Trova l'ID del modello per sale.order
model = models.execute_kw(
    db, uid, api_key,
    'ir.model', 'search_read',
    [['model', '=', 'sale.order']],
    {'fields': ['id', 'name']}
)[0]

# Crea il campo personalizzato
field_id = models.execute_kw(
    db, uid, api_key,
    'ir.model.fields', 'create',
    [{
        'name': 'x_project_type',
        'field_description': 'Tipo di Progetto',
        'model_id': model['id'],
        'ttype': 'selection',
        'selection': [('internal', 'Interno'), ('client', 'Cliente'), ('rd', 'R&D')],
        'state': 'manual',
    }]
)

Questo fa parte del flusso di lavoro standard della guida per sviluppatori Odoo per aggiungere campi senza modificare i file sorgente. È particolarmente utile per configurazioni remote e script di distribuzione automatizzati.


Per un approccio completo al modulo Python, i campi sono definiti in una classe modello e caricati tramite il meccanismo standard dei moduli Odoo. Questa è l'opzione più manutenibile per i campi che persisteranno attraverso gli aggiornamenti e devono essere tracciati nel controllo di versione.


Aggiungere il Campo a una Vista

Creare un campo non lo rende automaticamente visibile nell'interfaccia. È necessario aggiungerlo anche alla vista del modulo o alla vista elenco pertinente. Con Studio, questo viene fatto contemporaneamente alla creazione del campo. Con la personalizzazione tecnica, è necessario modificare direttamente il XML della vista o creare una vista ereditata che inietta il campo nella posizione corretta.


Migliori pratiche


I campi personalizzati sono facili da creare, ma un'architettura dei campi mal pianificata crea problemi difficili da risolvere in seguito. Queste sono le pratiche che mantengono le cose pulite.


Usa Campi di Selezione invece di Testo Libero Quando Possibile

Se l'insieme dei valori possibili è noto in anticipo, utilizza sempre un campo di Selezione invece di un campo Char. Il testo libero porta a voci inconsistenti ("Cliente", "cliente", "CLIENTE", "Cl.") che rompono filtri e report. Un menu a discesa impone coerenza senza costi aggiuntivi.


Nome i campi in modo chiaro e coerente

Il nome tecnico (x_project_type) dovrebbe riflettere il contenuto, non la posizione nel modulo. Un campo chiamato x_field_1 è impossibile da mantenere sei mesi dopo. Utilizza una convenzione di denominazione coerente e documenta a cosa serve ogni campo.


Non sovraccaricare i modelli nativi

Aggiungere dieci campi personalizzati a sale.order è solitamente un segno che un modello personalizzato sarebbe più adatto. Se un gruppo di campi appartiene insieme e rappresenta una nuova entità nella tua azienda (un progetto, un contratto, una certificazione), considera di creare un modello personalizzato e collegarlo con un campo Many2one.


Testa sempre su un database di staging

Prima di aggiungere campi a un'istanza di produzione, testa su una copia del database. La creazione di campi è per lo più sicura, ma aggiungere un campo al modello sbagliato, o con il tipo sbagliato, può richiedere una pulizia manuale. Un ambiente di staging cattura questi problemi in anticipo.


Documenta i tuoi campi personalizzati

Tieni un registro di ogni campo personalizzato che aggiungi: il modello, il nome tecnico, lo scopo e chi lo ha richiesto. Le implementazioni di Odoo accumulano campi nel tempo e senza documentazione diventa impossibile sapere quali sono ancora in uso e quali possono essere rimossi.


Usa lo strumento giusto per la logica calcolata

Se il valore di un campo dipende da altri campi, utilizza un campo calcolato piuttosto che chiedere agli utenti di compilarlo manualmente. Questo evita incoerenze e riduce gli errori di inserimento dati. I campi calcolati fanno parte della funzionalità core dei campi Python di Odoo e sono ben documentati nel tutorial tecnico ufficiale di Odoo.

Trappole comuni


Anche i team esperti si imbattono negli stessi problemi con i campi personalizzati. Ecco quelli che si presentano più frequentemente.


Dimenticare il One2many quando si crea un Many2one

Questo è l'errore tecnico più comune. Se aggiungi un campo Many2one nel modello A che punta al modello B, e non crei il corrispondente One2many nel modello B, la navigazione da B ad A è interrotta. Gli utenti non possono vedere i record correlati dall'altro lato della relazione. Crea sempre entrambi i campi insieme.


Eliminazione di un campo che contiene dati

Eliminare un campo personalizzato rimuove permanentemente la colonna del database e tutti i dati in essa contenuti. Non c'è modo di annullare. Se c'è qualche possibilità che il campo o i suoi dati possano essere necessari in futuro, archivia o nascondi il campo invece di eliminarlo.


Creazione di campi direttamente in produzione

Apportare modifiche direttamente su un database di produzione attivo, senza testare prima su staging, è un rischio anche per semplici aggiunte di campi. Se qualcosa va storto con la configurazione della vista, gli utenti ricevono errori. Valida sempre prima in un ambiente di test.


Conflitti di denominazione con campi standard

Odoo rifiuterà un nome di campo che esiste già nel modello, ma è facile creare accidentalmente un campo che sovrascrive un campo di un modulo che installi successivamente. Utilizzare un prefisso specifico per l'azienda (come x_acme_) per i tuoi campi personalizzati riduce notevolmente questo rischio.


Aggiunta di un campo alla vista senza considerare l'UX

Solo perché un campo può essere aggiunto a un modulo non significa che debba essere visibile per impostazione predefinita. Moduli ingombri rallentano gli utenti. Se un campo è rilevante solo in contesti specifici, mettilo in una scheda separata o rendilo visibile condizionatamente utilizzando regole di invisibilità basate su dominio.


Mescolare campi Studio e campi tecnici in modo incoerente

Quando un progetto combina personalizzazioni Studio e personalizzazioni basate su codice, puoi finire con campi che hanno scopi sovrapposti o nomi in conflitto. Concorda su una strategia all'inizio del progetto: utilizza Studio per tutti i campi senza codice e codice per logiche complesse, oppure utilizza codice per tutto. Mescolare entrambi senza un piano chiaro crea mal di testa nella manutenzione.

Conclusione


I campi personalizzati sono uno dei modi più semplici e impattanti per adattare Odoo alla tua azienda. Non richiedono modifiche al codice sorgente, si integrano naturalmente con il resto della piattaforma e forniscono agli utenti la cattura esatta dei dati di cui hanno bisogno senza soluzioni alternative.

La chiave è pianificare prima di costruire. Scegli il tipo di campo giusto, nomina le cose in modo chiaro, rispetta le convenzioni dei campi relazionali e documenta ciò che crei. Un'architettura dei campi ben progettata rende la tua istanza Odoo più facile da mantenere e più facile da evolvere man mano che la tua azienda cresce.


Che tu stia utilizzando Odoo Studio per campi rapidi senza codice o scrivendo moduli Python come parte di un progetto di personalizzazione di Odoo più ampio, i principi sottostanti sono gli stessi: abbina il campo ai dati, mantieni il modello pulito e testa sempre prima di distribuire in produzione.

Da Dasolo, aiutiamo le aziende a implementare, personalizzare e ottimizzare Odoo per adattarlo ai loro flussi di lavoro reali. Che tu abbia bisogno di aggiungere alcuni campi personalizzati alla tua configurazione esistente o di costruire un modulo personalizzato completo da zero, il nostro team è qui per aiutarti.

Contattaci se hai bisogno di indicazioni sulla tua implementazione di Odoo. Siamo felici di esaminare la tua configurazione attuale e suggerire il percorso più pulito da seguire.

Campi Personalizzati in Odoo: Guida Completa
Dasolo 6 marzo 2026
Condividi articolo
Accedi per lasciare un commento