Introduzione
Un errore su campo related di Odoo si verifica quando un campo definito con l'attributo related= non riesce a risolvere la sua referenza durante l'esecuzione. Questi problemi solitamente compaiono nei log del server e possono compromettere la visualizzazione delle form, il calcolo dei campi computati o l'esecuzione di automatismi.
I campi related sono utili perché permettono di esporre valori di un altro modello senza duplicare i dati. Tuttavia, se la catena di relazione è sbagliata o configurata male, Odoo solleverà errori di validazione o attributo.
Questa guida illustra le ragioni più frequenti degli errori sui campi related e le azioni pratiche per correggerli in sicurezza.
Che cos’è un campo related in Odoo?
Un campo related consente di richiamare il valore di un campo presente in un modello diverso rispetto a quello corrente.
Esempio pratico:
partner_email = fields.Char(
related="partner_id.email",
store=True
)
In altre parole:
- Il modello corrente possiede un campo Many2one chiamato partner_id
- Il campo related riprende il valore email dal modello res.partner
Se uno degli anelli della catena di relazione è errato, Odoo genera un errore relativo al campo related.
Cause più comuni degli errori su campi related in Odoo
1. Catena di relazione errata
Se il percorso related punta a un campo inesistente:
related="partner_id.non_existing_field"
Odoo può bloccarsi al caricamento del modulo o a runtime.
2. Mancanza della relazione Many2one
Se partner_id non è definito nel modello ma è usato nel related=, la relazione non si può risolvere.
3. Campo related non memorizzato (store=False) usato nelle domain
Se il campo related non è memorizzato ma viene impiegato in:
- Domini di ricerca
- Filtri
- Raggruppamenti
potrebbero manifestarsi comportamenti inattesi.
Esempio pratico:
store=False
Ma usato nelle ricerche → può generare errori.
4. Accesso a relazioni nulle
Se partner_id è vuoto, accedere a partner_id.email può causare problemi in alcuni contesti.
Odoo gestisce molti null in modo sicuro, ma catene di relazioni personalizzate possono fallire.
5. Incompatibilità del tipo di campo
Se il tipo del campo related non corrisponde al tipo del campo sorgente:
Esempio pratico:
partner_email = fields.Integer(related="partner_id.email")
La discrepanza di tipo causa errori di validazione.
6. Modifiche durante l'upgrade del modulo
Dopo un aggiornamento del modulo:
- I nomi dei campi possono cambiare
- I percorsi di relazione possono rompersi
- Le dipendenze possono spostarsi
I campi related sono sensibili ai cambiamenti strutturali.
Come risolvere gli errori legati ai campi related
Fase 1 – Verifica il percorso di relazione
Accertati che l'intera catena esista:
related="partner_id.email"
Controlla che:
- partner_id sia definito
- email esista nel modello di destinazione
Fase 2 – Conferma la corrispondenza dei tipi
Se il campo sorgente è Char, anche il campo related deve essere Char.
Fase 3 – Imposta store=True quando serve
Se il campo related viene usato per ricerca o reportistica:
store=True
Altrimenti Odoo potrebbe comportarsi in modo imprevedibile nelle query complesse.
Fase 4 – Controlla gli errori al caricamento del modello
Se l'errore emerge durante l'installazione del modulo:
- Riavvia Odoo
- Aggiorna il modulo
- Analizza il traceback
Gli errori sui campi related spesso compaiono all'inizializzazione del modello.
Fase 5 – Verifica le dipendenze dopo un upgrade
Se l'errore è comparso dopo:
- Upgrade di Odoo
- Aggiornamento di moduli custom
Accertati che i percorsi di relazione siano ancora validi.
Come evitare gli errori sui campi related
- Mantieni le catene di relazione corti e leggibili
- Evita path related troppo annidati
- Assicurati sempre la corrispondenza dei tipi dei campi
- Usa store=True quando il campo serve nei domini
- Testa gli aggiornamenti dei moduli in staging
I campi related sono potenti ma fragili quando la struttura dei modelli evolve.
Come Dasolo progetta architetture relazionali affidabili
Gli errori sui related emergono frequentemente quando le catene relazionali diventano complesse o quando modelli ereditati cambiano senza aggiornare le referenze.
Sebbene il log del server mostri spesso solo un traceback, dietro quell'errore si nascondono incoerenze strutturali nelle relazioni dei modelli.
Da Dasolo affrontiamo i problemi di campi related analizzando l'intera catena relazionale invece di limitare l'intervento al singolo campo. Queste anomalie solitamente derivano da:
- Riferimenti a campi errati o obsoleti
- Gerarchie di ereditarietà complesse
- Catene related su più livelli
- Gestione inadeguata degli aggiornamenti dei moduli
- Incoerenze nel contesto multi-company
Per garantire stabilità a lungo termine, puntiamo su mappature relazionali esplicite, estensioni controllate dei modelli e dipendenze ridotte al minimo. Un design relazionale pulito evita falle a catena e facilita la manutenzione dei moduli custom.
Conclusione
L'“Errore su campo related” in Odoo si verifica quando un campo non riesce a risolvere correttamente la sua referenza, spesso a causa di definizioni modello sbagliate, conflitti di ereditarietà o dipendenze mancanti. Anche se sembra un banale errore di configurazione, la causa reale è spesso un disallineamento architetturale più profondo.
Rivedendo con cura le catene relazionali, controllando l'ereditarietà dei modelli e verificando la coerenza dei campi dopo gli upgrade, gli sviluppatori possono eliminare la ricorrenza degli errori related. Un’architettura relazionale ordinata risolve il problema alla radice e migliora chiarezza e scalabilità del sistema.
Un approccio disciplinato alle relazioni fra modelli rende Odoo prevedibile, più facile da mantenere e più robusto man mano che la complessità funzionale cresce.
Domande frequenti
No. Si riscontrano in Odoo 14, 15, 16 e 17.
Sì. I campi related non memorizzati (non stored) possono rallentare l'elaborazione su grandi insiemi di record.
No: attiva store=True solo se ti serve per ricerca, filtri o reportistica.