Hoppa till innehåll

Datumfält i Odoo — komplett guide för användning och inställningar

Allt du behöver veta om datumfältet i Odoos datamodell — från grundläggande användning till avancerad teknisk anpassning
6 mars 2026 av
Datumfält i Odoo — komplett guide för användning och inställningar
Dasolo
| Inga kommentarer ännu

Introduktion


Om du någon gång öppnat en försäljningsorder, en projektuppgift eller en tillverkningsorder i Odoo så har du redan varit i kontakt med ett datumfält. Leveransdagar, förfallodatum på fakturor, avtalets startdatum — mycket av den tidssensitive informationen i Odoo sparas just som datumvärden.

För slutanvändare är datumfält enkla: klicka, välj i kalendern, klart. Men under ytan finns detaljer som påverkar hur data lagras och används. Att veta skillnaden mellan ett rent datumfält och ett tidsstämpelfält, och hur fältet representeras i datamodellen, gör det enklare att undvika tidszonsöverraskningar och bygga robusta arbetsflöden.

Den här guiden ger en komplett genomgång av datumfältet i Odoo — vad det lagrar, hur du använder och skapar det, samt praktiska rekommendationer för vanliga företagsflöden.

Vad är ett datumfält i Odoo


I Odoos ORM är fields.Date avsett för rena kalenderdatum utan någon tidpunkt. Ett datum som 2026-03-06 representerar endast år, månad och dag — inga timmar eller sekunder.

I PostgreSQL motsvaras det av kolumntypen DATE. Det skiljer sig från DateTime (TIMESTAMP) som innehåller en komplett tidpunkt och ofta sparas i UTC.

I användargränssnittet visas ett datumfält som ett textfält med kalenderplockare. Användaren kan skriva in datumet eller välja det i popup-kalendern. I listvyer visas datumet formaterat enligt användarens regionala inställningar.

Exempel på hur du definierar ett datumfält i en anpassad modul

Kodexempel: ett datumfält läggs till i en modell för att lagra en bekräftad deadline eller liknande. Det får en beskrivande label och kan ha hjälpttext för redaktörer och användare.

I Odoo Studio heter fälttypen helt enkelt "Date" och får automatiskt ett x_studio_-prefix. Skapar du fältet via Python eller API väljer du själv den tekniska namngivningen.

Hur fältet fungerar


Datum kontra tidsstämpel: vad som faktiskt skiljer

Det viktigaste att förstå är vad datumfältet inte innehåller: ingen tid på dygnet. Det finns ingen tidszonshantering — bara kalenderdatumet självt.

DateTime sparar tidpunkt i UTC och Odoo konverterar vid visning till användarens tidszon. Det är ofta källan till förvirrande buggar där ett datum ser ut att ha "skiftat" över natt. De problemen gäller normalt DateTime, inte rena datumfält.

När du använder ett datumfält är värdet exakt samma för alla användare. Ett datum 2026-03-15 är 2026-03-15 oavsett var användaren befinner sig.

Viktiga fältegenskaper

Här är de vanligaste attributen du kan konfigurera på ett datumfält i Odoo:

  • required — gör fältet obligatoriskt i både gränssnitt och modell.
  • default — sätter ett automatiskt startvärde. Exempelvis fields.Date.today för dagens datum vid skapande.
  • index — skapar index i databasen för snabbare filtrering och sökningar.
  • compute — kopplar fältet till en Python-metod som beräknar värdet dynamiskt.
  • store — i kombination med compute sparas det beräknade värdet i databasen.
  • readonly — förhindrar redigering i gränssnittet.
  • copy — styr om värdet kopieras vid duplicering; standard är True.

Hur fältet visas i vyer

I formulär visas datum som textfält med kalenderpop-up, i listor som formaterad text och i sökformulär finns färdiga filter som "denna vecka", "denna månad" samt jämförelseoperatorer som före/efter/exakt dag.

Visningsformat följer användarens språk- och regioninställningar (t.ex. DD/MM/YYYY i Europa). Oavsett visning sparas datum alltid i ISO-format (YYYY-MM-DD) i databasen.

Interaktion med Odoo ORM

När du läser ett datumfält via ORM får du ett Python datetime.date-objekt eller False om fältet är tomt. När du skriver kan du skicka ett datetime.date-objekt eller en sträng i formatet YYYY-MM-DD. Via XML-RPC hanteras datum som strängar.

Det krävs inga komplexa konverteringar — ramverket tar hand om lagring och formatering, vilket gör datumfält enkla att använda i utveckling och automation.

Affärsfall


Praktiska exempel i företag

CRM: avtalsstart och -slut

I säljarbetet behövs ofta start- och slutdatum för avtal. Ett datumfält på en lead eller kontraktsmodell hjälper att hålla reda på när ett avtal börjar och när det löper ut.

Kombineras datumfält med automatiserade åtgärder kan systemet skicka påminnelser eller ändra status när ett avtal närmar sig slutet, vilket minskar risken för missade förnyelser.

Försäljning: kundens önskade leveransdatum

Kunder anger ofta ett konkret leveransdatum vid beställning. Ett "Önskat leveransdatum"-fält på ordern ger logistikteamet en tydlig målbild för planering.

Ett rent datumfält minimerar tidzonproblem och säkerställer att lagerpersonalen ser samma dag som sälj visade — ingen omräkning av tider behövs.

Lager: bäst före-/utgångsdatum på batcher

Inom livsmedel, läkemedel och kemi måste partier ha utgångsdatum. Lagerhanteringen i Odoo använder datumfält för att lagra dessa datum på stock.lot.

Dessa fält driver plockstrategier som FEFO och triggar automatiska varningar när varor närmar sig utgångsdatum, vilket skyddar kvalitet och efterlevnad.

Redovisning: fakturans förfallodatum

Fakturors förfallodatum är datumfält. De avgör när betalningspåminnelser skickas, vilka poster som räknas som förfallna och hur åldersrapporter beräknas.

Ett felaktigt förfallodatum påverkar kassaflödet tyst men kraftigt — automatiska påminnelser och uppföljningar förlitar sig på att dessa datum är korrekta.

HR: anställnings-, avtal- och certifikatdatum

HR använder datumfält för anställningsdatum, slutdatum för prövotid, avtalens giltighetstid och certifikatens utgångsdatum. De driver automatiska e-postpåminnelser och löneberäkningar.

Ett välskött HR-upplägg i Odoo bygger på korrekta datumfält över medarbetarregister — ofta är dessa datum triggerpunkter för affärskritisk automation.

Skapa eller anpassa datumfältet


Det finns tre huvudsakliga sätt att lägga till ett datumfält i en Odoo-modell beroende på teknisk nivå och deploymentsstrategi.

Använda Odoo Studio (ingen kod)

Odoo Studio är snabbast för icke-utvecklare som vill lägga till ett datumfält utan programmering. Rekommenderas för snabba anpassningar och konsulter som arbetar nära slutanvändaren:

  1. Öppna Odoo Studio från huvudmenyn.
  2. Gå till det formulär där fältet ska placeras.
  3. Dra in ett Date-fält från sidopanelen till formuläret.
  4. Sätt etikett, obligatorisk-status och eventuellt standardvärde.
  5. Spara och stäng Studio.

Studio skapar fältet med x_studio_-prefix och lägger till det i formuläret omgående, ingen manuell databasmigrering krävs.

Via Python i en anpassad modul

För utvecklare som versionstyr och distribuerar ändringar är Python-moduler rätt väg. Detta används vid integrationer och större anpassningar som ska fungera över flera miljöer:

Kodexempel: lägg till ett indexerat datumfält på sale.order med copy=False och hjälpinformation för användarna.

Efter att fältet är lagt i modellen behöver du även referera till det i vyernas XML så det syns i gränssnittet. Odoo skapar kolumnen i databasen när modulen installeras eller uppgraderas.

Via XML-RPC API

För automatiserade deployment-skript eller fjärrkonfiguration kan du skapa datumfält via XML-RPC API:et.

Kodexempel: anropa ir.model.fields.create med ttype='date' och definiera namn, beskrivning och modell.

ttype för datumfält är 'date'. Vid 'datetime' använder du 'datetime'. Att sätta state='manual' markerar fältet som skapad manuellt utanför modulinstallationer.

Bra riktlinjer


1. Använd Date, inte DateTime, när tidpunkt inte spelar roll

Om bara kalenderdagen är viktig (deadline, födelsedag, utgångsdatum) välj fields.Date. Att använda DateTime i sådana fall lägger till onödig komplexitet och risk för fel på grund av tidszoner.

2. Ange ett meningsfullt standardvärde när det hjälper användaren

För fält som "Förväntat leveransdatum" är det ofta hjälpsamt att defaulta till idag eller idag plus ett antal dagar. I Python använder du default=fields.Date.today (utan parenteser) för att få ett dynamiskt standardvärde vid skapande.

3. Indexera datumfält som ofta används i rapporter och filter

Om användarna regelbundet filtrerar på ett datumfält (förfallna fakturor, kommande förnyelser) sätt index=True. På stora dataset förbättrar det prestanda avsevärt och kräver liten extra insats att lägga till.

4. Använd copy=False för datum som inte ska ärvas vid kopiering

Datum som avtalsstart eller utgångsdatum bör inte automatiskt flyttas över vid duplicering av en post. copy=False tvingar användaren att ange nytt datum och förebygger tysta fel vid kopiering.

5. Lägg in valideringar när två datum bildar ett intervall

När en modell har Start- och Slutdatum, lägg en @api.constrains-validering så att slutdatum inte är före startdatum. Detta förhindrar svårdiagnostiserade problem i beräkningar och rapporter längre fram.

Vanliga fallgropar


Att blanda ihop Date och DateTime

Det vanligaste misstaget är att använda DateTime där ett rent datum duger. DateTime sparas i UTC och konverteras vid visning, vilket kan göra att ett datum verkar ha förskjutits en dag för användare i andra tidszoner.

Välj alltid den enklaste fälttypen som uppfyller det verkliga affärsbehovet.

Glömmer serverns tidszon vid schemalagda åtgärder

fields.Date.today() ger servers dagsdatum i UTC. För många rapporter räcker det, men i distribuerade team kan detta ge dagsskillnader. Testa automationsregler från olika tidszoner om ni har global användning.

Saknade valideringar för datumpar

Det är vanligt att Start- och Slutdatum finns utan kod som säkerställer att de är i logisk ordning. Detta tillåter felaktiga värden som kan förstöra beräkningar och rapporter. Alltid lägg en constrain när två datum bildar ett intervall.

Att inte indexera datumfält som används i filter

Datumfält som används i vyer för "förfallna" eller "kommande" gör ofta jämförelser mot dagens datum. Utan index blir dessa frågor fulla tabellskanningar och saktar ner systemet på modeller med många poster.

Spara inte datum som textfält

Vissa sparar datum i Char-fält för att bevara format eller undvika datumväljaren. Det förstör sortering, filtrering och datumberäkningar. Använd alltid fields.Date — ramverket sköter formatering och lokalisering åt dig.

Vanliga frågor


Vad skiljer ett Date- och ett DateTime-fält i Odoo?

Date sparar endast år-månad-dag utan tidpunkt. DateTime sparar full tidpunkt (timmar, minuter, sekunder) i UTC och visas i användarens tidszon. Använd Date när tid på dygnet inte spelar roll, DateTime när exakt tidpunkt måste spåras.

Hur sätter jag dagens datum som standard för ett datumfält?

I Python: default=fields.Date.today (utan parentes). Det är en callable som utvärderas vid postskapande. I Odoo Studio väljer du "Idag" som standard i fältegenskaperna.

Kan jag beräkna ett datumfält utifrån andra fält?

Ja. Ange compute='_compute_my_date' och skriv en metod med @api.depends() för att lista utlösande fält. Använd datetime.date och timedelta för beräkningar och lägg store=True om resultatet ska sparas för sökning och rapportering.

Hur filtrerar jag poster inom ett datumintervall i en Odoo-domain?

Använd vanliga jämförelseoperatorer i domen. Till exempel, för att hitta poster i mars 2026:

Exempel på domain: [ ('x_date_field','>=','2026-03-01'), ('x_date_field','<=','2026-03-31') ]

Datumsträngar i domäner ska alltid vara i ISO-format: YYYY-MM-DD.

Kan jag göra ett datumfält obligatoriskt bara under vissa villkor?

Odoo visar villkorlig obligatoriskhet i vyer via attrs, men för äkta backend-hantering behöver du en Python-constraint med @api.constrains. Odoo Studio erbjuder praktiska visuella regler för enklare fall utan kod.

Sammanfattning


Datumfältet är ett av de mest användbara fälttyperna i Odoo: enkelt att förstå, lätt att använda och tillräckligt kraftfullt för att driva påminnelser, förfallslogik och tidsbaserade rapporter.

Sammanfattning: använd Date när endast kalenderdagen är relevant, tänk igenom standardvärden och index för prestanda, och skydda intervall med valideringar.

Att bygga välstrukturerade datamodeller i Odoo börjar i små beslut som att välja rätt fälttyp. Rätt val från början gör systemet mer robust och underlättar framtida funktioner — och datumfältet är en grundsten i det arbetet.

Vi hjälper dig med Odoo Hör av dig till oss så tar vi ett samtal om ditt Odoo-projekt.

Datumfält i Odoo — komplett guide för användning och inställningar
Dasolo 6 mars 2026
Dela detta inlägg
Logga in att lämna en kommentar