Passa al contenuto

Campi di Testo in Odoo: Guida Completa e Pratica

Guida completa al campo Text nel modello dati di Odoo: cos’è, quando usarlo e come personalizzarlo a livello pratico e tecnico
6 marzo 2026 di
Campi di Testo in Odoo: Guida Completa e Pratica
Dasolo
| Ancora nessun commento

Introduzione


Il campo Text è il classico spazio libero dove si scrive: note interne, descrizioni prodotto, annotazioni su un ordine. Quando un utente ha bisogno di più righe per esprimersi, molto spesso finisce proprio dentro un Text.


Appare come un semplice box di testo nell’interfaccia, ma saperne le caratteristiche tecniche e la collocazione nel modello dati di Odoo cambia il modo in cui progetti moduli, personalizzi con codice o crei campi con Studio per il team.

Questa guida mostra cosa contiene un campo Text, come si comporta nella pratica, casi d’uso aziendali, come crearlo e personalizzarlo, le regole da seguire e gli errori più frequenti da evitare.

Cos’è il campo Text in Odoo


Nel cuore dell’ORM di Odoo, fields.Text è il tipo pensato per testi multilinea in plain text. In PostgreSQL corrisponde a una colonna TEXT senza limite di lunghezza: si possono memorizzare poche parole come interi paragrafi senza problemi.


Nelle form viene reso come un elemento <textarea> ridimensionabile; nelle viste elenco viene tagliato per adattarsi alla colonna; nelle ricerche supporta filtri testuali analoghi ai campi Char.


Di seguito un esempio minimale di definizione del campo in un modulo Python (solo come riferimento concettuale):

from odoo import fields, models

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

    internal_notes = fields.Text(
        string='Internal Notes',
        translate=False,
    )

Se lo crei con Odoo Studio lo vedrai elencato come Multi-Line Text e Odoo gli applicherà automaticamente un prefisso x_studio_. Se lo definisci via codice o API, scegli tu il nome tecnico.


Differenze rispetto a Char e Html

In Odoo esistono più tipi per memorizzare testo e capire quale usare è fondamentale per evitare confusione e problemi di usabilità o di esportazione dei dati.


  • Campo Char: è pensato per testi su una singola riga. Ideale per nomi, codici, riferimenti brevi. Può avere un limite di lunghezza.
  • Campo Text: textarea multilinea. Ideale per appunti, descrizioni e commenti liberi. Memorizza testo semplice senza formattazione.
  • Campo Html: editor rich text. Usalo quando serve formattazione (grassetto, elenchi, link) per contenuti che verranno mostrati con stile, come pagine web o template di email. Memorizza markup HTML.

Il Text sta a metà strada: offre più spazio del Char ma senza il sovraccarico dell’HTML. Per note interne e descrizioni semplici è spesso la scelta più logica nel modello dati di Odoo.

Come funziona il campo


Quando aggiungi un campo Text a un modello, l’ORM crea automaticamente la colonna TEXT in PostgreSQL durante l’installazione o l’aggiornamento del modulo: non servono migrazioni manuali SQL.


A differenza del campo Char, il Text non accetta un parametro size; la colonna di database non impone limiti perché il campo è pensato per contenuti aperti e senza vincoli di lunghezza.


Attributi chiave del campo

Ecco gli attributi principali che conviene conoscere quando si lavora con un Text in Odoo:


  • translate: abilita la traduzione del contenuto per istanze multilingua. Utile quando il testo viene mostrato a clienti o su documenti pubblici.
  • required: rende il campo obbligatorio a livello di interfaccia e ORM; l’utente non può salvare senza valorizzarlo.
  • default: imposta un valore predefinito alla creazione del record; può essere una stringa fissa o una funzione callable.
  • compute: lega il campo a un metodo Python che calcola il valore dinamicamente, comodo per sommari automatici o contenuti derivati.
  • store: con compute, definisce se il valore venga memorizzato su database; con store=True il testo diventa ricercabile e disponibile nei report.
  • copy: decide se il valore viene copiato quando si duplica un record; di default è True, impostalo a False quando non vuoi ereditare note specifiche.
  • index: raramente usato sui Text perché l’indicizzazione funziona diversamente; per ricerche testuali si preferisce il full-text di PostgreSQL o i filtri nativi di Odoo.

Come si presenta nelle viste

Nelle form è un <textarea> ridimensionabile in altezza; nelle liste il contenuto viene troncato; nelle ricerche la presenza del campo nella search view abilita i filtri testuali.


A differenza di un Html, il Text non carica un editor WYSIWYG: l’utente vede un’area di testo semplice e ciò che scrive viene salvato così com’è, con ritorni a capo preservati.


Interazione con l’ORM di Odoo

Per gli sviluppatori leggere e scrivere un campo Text è diretto: si accede al valore sull’oggetto record e l’ORM si occupa della persistenza. I ritorni a capo vengono mantenuti; non avviene alcuna sanitizzazione automatica come accade per Html (dove Odoo previene problemi di XSS).

Esempi pratici in azienda


Dove si usa concretamente in azienda


Ecco cinque scenari reali in cui i Text sono utili nei processi aziendali.

Vendite: note interne sull’ordine


Il campo note sugli ordini (o campi chiamati internal_note) è spesso un Text. I commerciali annotano istruzioni di consegna, richieste di imballaggio o dettagli sul cliente che non vanno sui documenti ufficiali. Queste informazioni seguono l’ordine e sono visibili ai team operativi.

Magazzino: note interne sul prodotto


La scheda prodotto offre una sezione Note dove il magazzino annota istruzioni di gestione, fragilità o condizioni particolari del fornitore. Essendo testo semplice e non visibile al cliente, è il posto giusto per informazioni operative sensibili.

Acquisti: termini e istruzioni fornitore


Sui ddt e sugli ordini di acquisto un campo Text permette al team acquisti di memorizzare accordi presi con il fornitore, restrizioni di consegna o dettagli verificati per telefono, evitando fraintendimenti quando la conversazione originale non è più disponibile.

CRM: riepiloghi di opportunità e appunti di meeting


Nei pipeline CRM si aggiunge spesso un Text per riassumere incontri, obiezioni o contesto del processo d’acquisto. A differenza della chatter, un campo dedicato facilita la lettura rapida quando un altro collega prende in carico il lead.

HR: osservazioni su dipendenti e candidati

Creare o personalizzare un campo Text


HR utilizza campi Text su anagrafiche dipendente o candidato per appunti di colloquio, osservazioni di performance o note di onboarding. È una soluzione semplice, ricercabile e facilmente integrabile nei report HR senza creare nuovi modelli.


Tre modi per aggiungere un campo Text a un modello Odoo

La scelta dipende da chi gestisce la customizzazione e dall’ambiente di distribuzione: Studio per chi non programma, Python per soluzioni versionate, API per automazioni remote.

  1. Con Odoo Studio (senza codice)
  2. Studio è la via rapida per utenti e consulenti che non vogliono scrivere codice. Procedura tipica:
  3. Apri Odoo Studio dall’interfaccia (serve l’app Studio).
  4. Vai alla form dove vuoi inserire il campo.
  5. Trascina il campo Multi-Line Text dalla barra di Studio nella posizione desiderata.

Configura etichetta, obbligatorietà e valore di default nelle proprietà del campo.


Salva e chiudi Studio.

Studio crea il campo e aggiorna la vista automaticamente, applicando il prefisso x_studio_ e rendendolo subito disponibile senza riavviare il server o migrazioni manuali.


Con Python in un modulo custom

Per customizzazioni mantenibili e distribuibili su ambienti diversi è preferibile definire il campo in un modulo Python. Flusso tipico:


from odoo import fields, models class ResPartner(models.Model): _inherit = 'res.partner' x_client_notes = fields.Text( string='Client Notes', translate=False, copy=False, )

Dopo averlo dichiarato devi inserirlo nella vista XML pertinente; Odoo creerà la colonna al momento dell’installazione o dell’aggiornamento del modulo. È l’approccio consigliato per le personalizzazioni di produzione.


Con l’API XML-RPC

Se gestisci campi in modo programmato (script di deploy o configurazioni remote), puoi creare il campo via XML-RPC:

Buone pratiche


field_id = models.execute_kw( ODOO_DB, uid, ODOO_API_KEY, 'ir.model.fields', 'create', [{ 'name': 'x_client_notes', 'field_description': 'Client Notes', 'model_id': model_id, 'ttype': 'text', 'state': 'manual', 'translate': False, 'copy': False, }] )

Impostando ttype: 'text' spieghi a Odoo che desideri un campo Text; state: 'manual' indica che il campo è stato creato al di fuori di un modulo (come avviene con Studio o script remoti). Questo metodo è utile per deployment automatizzati.


Regole pratiche: quando usare Text

1) Usa Text solo quando il contenuto richiede più righe


Errore comune: scegliere Text per valori che starebbero su una riga. Se si tratta di nomi, codici o riferimenti brevi, preferisci Char. Il Text per valori monolinea rende l’interfaccia goffa e il modello dati fuorviante.

2) Usa Html quando serve formattazione


Se il testo deve contenere elenchi, link o formattazione visuale, Text non è adeguato: scegli Html. Chiedere agli utenti di inserire formattazione in un semplice textarea porta a frustrazione.

3) Abilita translate per contenuti rivolti agli utenti in lingue diverse


In istanze multilingua, qualsiasi campo Text visibile su documenti client o sito dovrebbe avere translate=True per permettere traduzioni distinte senza sovrascrivere il contenuto degli altri linguaggi. Per note interne spesso non è necessario.

4) Imposta copy=False per note che non devono duplicarsi

Errori comuni da evitare


Quando duplico ordini o prodotti, i campi Text vengono copiati per default. Per appunti contestuali (es. conversazioni specifiche) conviene bloccarne la copia per evitare confusione nei record duplicati.

5) Usa compute con store=True per riepiloghi automatici


Un pattern utile è creare campi Text calcolati che concatenano informazioni di altri campi. Con store=True e i corretti @api.depends(), il testo viene memorizzato e diventa ricercabile, utile per sintetizzare informazioni senza creare report complessi.

Errori frequenti da evitare


Scegliere Text quando serve Html

Se il contenuto verrà pubblicato su sito o PDF con formattazione, usare Text annulla ogni markup. Testi incollati con elenchi o grassetto appariranno come prose piatte: valuta sempre il canale di output prima di decidere il tipo.


Scegliere Text quando va bene Char

Usare Text per valori brevi (es. numeri di tracking) appesantisce l’interfaccia: i contenuti su singola riga dovrebbero stare in un Char per mantenere le form pulite e coerenti.


Dimenticare translate su campi visibili all’estero

Non abilitare translate=True per contenuti rivolti a utenti in lingue diverse provoca una visualizzazione invariata per tutti. Correggerlo dopo aver inserito dati richiede una migrazione attenta per non perdere contenuti esistenti.

Conclusione


Usare Text per dati strutturati


 Mettere JSON, valori separati da pipe o altri formati strutturati dentro un Text è una pratica pericolosa. Se il contenuto ha una struttura prevedibile, usa campi appropriati (Selection, Many2one) o modelli relazionati: così puoi filtrare, raggruppare e fare report in modo affidabile.

Non aggiungere il campo alla search view


Un Text importante ma non inserito nella search view non sarà ricercabile dalla barra di ricerca: gli utenti dovranno scorrere manualmente i record. Se il campo contiene informazioni che si cercheranno per parola chiave, aggiungilo alla search view quando lo crei.

Il ruolo del campo Text nel modello Odoo Il Text è un mattoncino apparentemente banale ma fondamentale quando si passa da una configurazione superficiale a una progettazione delle form più matura. Scegliere correttamente tra Char, Text e Html è una delle prime decisioni in un progetto Odoo: farlo bene evita rilavorazioni e problemi di qualità dei dati.

Campi di Testo in Odoo: Guida Completa e Pratica
Dasolo 6 marzo 2026
Condividi articolo
Accedi per lasciare un commento