Hoppa till innehåll

Förklara Odoo Tracking Field: Spåra ändringar i poster tryggt

Upptäck hur attributet för spårning fungerar i Odoo, när det är nyttigt att aktivera det och hur du ställer in det i din datamodell. Den här genomgången förklarar enkelt vad spårningsattributet gör, vilka situationer som kräver det (till exempel produkter eller fält där ändringshistorik är viktig), och visar steg-för-steg hur du lägger till och konfigurerar det i dina modeller och vyer. Du får också praktiska tips för bästa praxis — när du bör begränsa användningen för att undvika prestandaproblem och hur du visar ändringsloggar i gränssnittet så att både utvecklare och slutanvändare kan dra nytta av historiken.
6 mars 2026 av
Förklara Odoo Tracking Field: Spåra ändringar i poster tryggt
Dasolo
| Inga kommentarer ännu

Om du någon gång undrat vem som ändrade en post i Odoo och när det hände, är fältspårningen den funktion som ger svaret.


I Odoo kan du välja ut specifika fält som ska loggas, och varje ändring sparas automatiskt i postens chatter så att teamet får en löpande historik utan att behöva bygga ett separat revisionssystem.

Oavsett om du lägger till fält via Odoo Studio eller skriver modulkod i Python är kunskap om hur fältspårning fungerar central när du jobbar med Odoos datamodell. Den här guiden ger dig allt nödvändigt för att komma igång och fatta genomtänkta beslut.

Vad betyder spårning av fält i Odoo


I Odoo är inte ”spårning” en egen fälttyp — det är en egenskap du slår på för befintliga fält (t.ex. Char, Many2one, Selection, Integer eller Date). När spårning är aktiverat loggar Odoo varje värdeändring i chatter med gammalt värde, nytt värde, tidpunkt och användare.

I användargränssnittet syns detta som en automatisk loggpost i meddelandetråden. Till exempel kan en försäljningslead visa: ”Status ändrad från Ny till Kvalificerad” i chatter direkt när en säljare flyttar affären vidare.

Egenskapen kan användas för de flesta standardfält och aktiveras antingen i Odoo Studio eller direkt i Python-koden i en anpassad modul.

Vilken information sparas

Varje spårad ändring skapas som en mail.message kopplad till posten. Meddelandet innehåller bland annat:

  • Fältets etikett som ändrats
  • Det tidigare värdet (före ändringen)
  • Det nya värdet (efter ändringen)
  • Tidpunkten för ändringen
  • Användaren som utförde ändringen

Historiken är synlig för alla med läsbehörighet på posten och kräver inga extra inställningar utöver att spårningen är aktiverad på fältet.

Hur funktionen fungerar i praktiken


För att spårningen ska fungera måste modellen ärva mixinen mail.thread. Den tillhandahåller infrastrukturen för meddelanden och loggning som driver chatter. Många standardmodeller som sale.order, crm.lead, account.move och stock.picking har detta som standard.

När en användare sparar en post där spårade fält ändrats jämför Odoo gamla och nya värden och skapar automatiskt en loggpost i chatter — ingen ytterligare åtgärd krävs av användaren.

Teknisk mekanik i ORM:en

Tekniskt fångar Odoos ORM upp write()-operationer på modellen. När en tracked field ändras fångar ramverket det tidigare värdet, applicerar uppdateringen och skapar sedan en mail.message som beskriver skillnaden.

I Python aktiveras spårning genom att ange tracking=True i fältdefinitionen i modellklassen.

state = fields.Selection(
    [('draft', 'Draft'), ('confirmed', 'Confirmed')],
    tracking=True
)

Du kan också ange en prioritet mellan 1 och 10 för att bestämma i vilken ordning fält visas i loggen när flera spårade fält ändras samtidigt. Lägre nummer visas först.

partner_id = fields.Many2one('res.partner', tracking=1)
priority = fields.Selection(tracking=10)

Hur spårning berör relaterade poster

Loggarna sparas på samma post där fältet finns — de sprids inte automatiskt till relaterade modeller. Vill du ha motsvarande historik i andra objekt måste du aktivera spårning även där.

Detta är avsiktligt: revisionshistoriken hålls nära den modifierade objektet så att du snabbt kan granska förändringar utan att behöva följa långa kedjor av relationer.

När företag har nytta av fältspårning


Praktiska användningsfall där spårning ger tydlig nytta


1. CRM och pipeline-översikt

Säljteam behöver veta när en lead bytt status och vem som gjorde det. Genom att spåra stage_id i CRM får chefer en komplett tidslinje över alla steg i affärens livscykel.

Det underlättar att upptäcka flaskhalsar i pipelinen, förbereda uppföljningar och coacha säljare baserat på faktiska händelser, inte minnesbilder.


2. Godkännandeflöden för inköp och fakturor

Inom ekonomi och inköp kräver många rutiner spårbarhet för vem som godkänt vad och när. Genom att spåra state på inköpsorder eller leverantörsfakturor blir beslutshistoriken direkt sökbar i chatter utan separat revisionsverktyg.

Det är särskilt viktigt i företag med interna kontroller eller extern revision.


3. Lagerstyrning

När kvantiteter eller lagringsplatser förändras oförklarligt hjälper spårning på lagerflytt eller produktpost att snabbt hitta orsaken till avvikelser.

I stället för att leta i separata loggar finns svaret i chatter på den berörda posten.


4. Kvalitet i kunddata

Om kunduppgifter uppdateras ofta är det värdefullt att spåra kritiska fält som email, phone eller pricelist_id på partnerobjektet. Det ger kundtjänst och datateam en klar historik vid felhantering.


5. Personaladministration

För HR är det viktigt att kunna se ändringar i anställningsroll, avdelning eller löneklass. Spårning skapar transparens som förenklar efterlevnad och intern revision.


Så lägger du till eller anpassar ett spårningsfält


Två vägar till att slå på spårning: no-code via Studio eller kod via Python i en modul.

Aktivera via Odoo Studio

Med Odoo Studio är det enkelt för administratörer att slå på spårning utan kod. Öppna Studio på aktuell modell, klicka fältet och aktivera reglaget för Track Changes i fältinställningarna.

När det är aktiverat loggas alla framtida ändringar i chatter. Det här är oftast det snabbaste sättet för icke-utvecklare att införa spårbarhet i systemet.

Samma gränssnitt fungerar när du skapar nya anpassade fält via Studio — du kan slå på spårning redan vid fältskapandet.

Aktivera via Python i en modul

Utvecklare lägger till spårningsattributet direkt i fältdefinitionen i modellklassen. Det är standardpraxis i alla tekniska Odoo-projekt.

Modellen måste dessutom ärva mail.thread för att spårningen ska ha effekt. Här är ett enkelt exempel:

from odoo import models, fields

class ProjectTask(models.Model):
    _name = 'project.task'
    _inherit = ['project.task', 'mail.thread']

    x_client_priority = fields.Selection(
        [('low', 'Low'), ('medium', 'Medium'), ('high', 'High')],
        string='Client Priority',
        tracking=True
    )

Det här är ett vanligt mönster när du utökar en befintlig modell i en utvecklingsfas. Fältet fungerar som ett vanligt databaskolumn men får nu automatisk historik när värdet ändras.

Viktigt tips för helt nya modeller

Skapar du en helt ny modell — se till att inkludera _inherit = ['mail.thread', 'mail.activity.mixin'] i definitionen. Utan dessa mixins ignoreras tracking-egenskapen utan varning.

Det här är en punkt som ofta förvillar nya utvecklare: mixinen behövs för att spårningen ska fungera.

Riktlinjer och rekommenderade tillvägagångssätt


Spårning är lätt att sätta upp men också lätt att använda på fel sätt. Följ dessa råd för att få bästa effekt.

Spåra bara relevanta fält

Att slå på spårning för alla fält leder till brus i chatter och gör historiken svårläst. Prioritera fält som verkligen behövs för revision eller beslut — statusfält, ansvarig användare, viktiga datum och ekonomiska värden.

Använd prioritet för bättre läsbarhet

När många fält är spårade på samma modell, använd prioriteringsnummer (1–10) för att gruppera och ordna ändringarna i loggen. Det gör det enklare att snabbt förstå vad som hänt vid en sparning.

Kombinera med rätt åtkomstkontroller

Spårning är mest tillförlitligt i kombination med välkonfigurerade access rules. Om alla kan ändra poster utan begränsning blir auditloggarna mindre meningsfulla — säkra åtkomsten innan du förlitar dig på chatter för revision.

Dokumentera vilka fält som spåras

Håll en tydlig lista över spårade fält i projekt med flera utvecklare. Det underlättar kodgranskningar och förhindrar förvirring efter uppgraderingar eller ändringar.

Testa i stagingmiljö innan produktion

Verifiera spårningsbeteendet i staging. Vissa fälttyper — särskilt beräknade eller relaterade fält — kan uppföra sig annorlunda om de inte är lagrade.

Vanliga misstag att undvika


De vanligaste problemen med fältspårning i Odoo

Glömma att ärva från mail.thread

Det vanligaste felet är att en modell saknar mail.thread, vilket gör att spårningen ignoreras tyst. Det ger inga felmeddelanden; kontrollera alltid arvskedjan om loggar saknas.

Försöka spåra icke-lagrade beräknade fält

Beräknade fält kan spåras endast om de är lagrade (store=True). Ett icke-lagrade beräknat fält har ingen bestående värdepost i databasen, så det finns inget att jämföra före och efter — spårningen får då ingen effekt.

Aktivera spårning på för många fält

Lockelsen att slå på spårning överallt kan göra chatter oanvändbart i praktiken. Var selektiv och fokusera på affärskritiska fält.

Räkna inte med spårning vid direkta SQL- eller importoperationer

Spårning triggas via ORM:ens write(). Direkt SQL-uppdateringar, vissa bulkimporter som kringgår ORM, eller låg-nivå API-anrop kommer inte att skapa loggar. Säkerställ att skrivningar går genom ORM vid batchoperationer.

Krockar mellan Studio och Python-definitioner

Om ett fält ursprungligen skapats i Studio med spårning, var försiktig med att samtidigt ändra det i Python-moduler. Konflikter kan skapa oförutsägbara beteenden vid uppgraderingar eller moduluppdateringar.

Vanliga frågor och korta svar


Kan jag spåra fält på vilken modell som helst i Odoo?

Endast modeller som ärver mail.thread stödjer fältspårning. Många standardmodeller har det redan, men anpassade modeller måste ange det explicit.

Påverkar spårning prestandan?

För de flesta scenarier är påverkan liten — varje ändring skapar en mail.message-post vilket ger en viss overhead. I mycket högvolymmiljöer bör du överväga vilka fält som verkligen behöver spåras för att undvika en stor mängd loggposter.

Kan jag stänga av spårning utan att förlora historiken?

Ja. Om du stänger av spårning slutar nya ändringar loggas, men befintliga meddelanden i chatter bevaras och raderas inte.

Fungerar spårning på Many2many-fält?

Ja. Many2many-spårning stöds — chatter visar vilka poster som lagts till eller tagits bort i relationen snarare än ett enkelt före/efter-värde. Visningen skiljer sig något från vanliga fält.

Behöver jag Odoo Studio för att använda spårning?

Nej. tracking är en standardparameter i Python-fältdefinitioner och kan användas helt utan Studio. Studio är bara ett visuellt alternativ för administratörer och gör samma sak utan kod.

Sammanfattning


Spårningsfunktionen är ett diskret men kraftfullt verktyg som ger mycket värde med minimal konfiguration. Rätt tillämpad skapar den transparenta auditspår, minskar tvister om ändringar och stärker styrningen av era data.

Oavsett om du aktiverar spårning snabbt via Studio eller bygger det in i en skräddarsydd Python-modul, får du samma fördel: full insyn i hur era affärsdata förändras över tid.

Nyckeln är att veta var den gör mest nytta. Fokusera på fält som styr beslut, godkännanden och ansvar i era processer — då får du mest värde med minst arbete.

På Dasolo hjälper vi företag att implementera, anpassa och optimera Odoo för deras unika processer. Vi kan stödja allt från datamodellsdesign och fältspårning till utveckling av skräddarsydda moduler.

Kontakta oss gärna för att diskutera din Odoo-implementation. Kontakta oss så hittar vi tillsammans den bästa lösningen för ditt projekt.

Förklara Odoo Tracking Field: Spåra ändringar i poster tryggt
Dasolo 6 mars 2026
Dela detta inlägg
Logga in att lämna en kommentar