Varje företag har unika behov — ofta kräver era processer information som standardprogram inte tänkt på. Därför finns möjligheten att lägga till egna fält i Odoo: ett enkelt sätt att fånga just den data ditt team behöver utan att tvinga om arbetsrutinerna.
Istället för att anpassa era processer till en förutbestämd datamodell kan ni lägga till nya fält på nästan vilken post som helst — kunder, offerter, artiklar eller fakturor. Ni bestämmer vilken information som ska sparas, och fälten lever sida vid sida med Odoos inbyggda data.
Den här guiden ger en helhetsbild: vad egna fält är, hur de är uppbyggda, hur du skapar dem både med och utan kod, och hur du använder dem så att din Odoo-miljö förblir överskådlig och lätthanterlig.
Vad är ett anpassat fält i Odoo
Ett anpassat fält är helt enkelt en extra databaskolumn som knyts till en befintlig Odoo-modell. Det lagrar en specifik uppgift för en post på samma sätt som ett standardfält gör.
I Odoo märks egna fält ofta med prefixet x_. Fält som skapas via Odoo Studio får till exempel namn som x_studio_priority_level, medan programmerade fält kan få ett företagsanpassat prefix som x_mittforetag_cost_center.
För slutanvändaren ser ett anpassat fält ut och beter sig precis som ett vanligt fält: det kan visas i formulär, listor, filtreringar, gruppering och rapporter. Den tekniska skillnaden är osynlig i det dagliga arbetet.
Tillgängliga fälttyper
Odoo erbjuder många fälttyper för anpassade fält som täcker de flesta behov:
- Text (Char): Kort text, t.ex. referenskod eller etikett
- Lång text: Flera rader för beskrivningar eller anteckningar
- Heltal (Integer): Räknevärden eller poäng
- Decimal (Float): Värden med decimaler för mått eller procentsatser
- Monetärt: Belopp kopplat till valutafält
- Boolean: Ja/nej-knapp (checkbox)
- Datum / Datum & tid: Kalenderdatum eller tidsstämpel
- Val (Selection): Fördefinierad rullgardinslista
- Many2one: Länk till en enskild post i annan modell
- One2many: Lista med relaterade poster från annan modell
- Many2many: Flera poster kopplade från annan modell
- Binär: Filbilaga
- HTML: Rich text-innehåll
Att välja korrekt fälttyp från början sparar tid senare. När möjliga värden är kända är ett valfält (Selection) nästan alltid bättre än fri text för att undvika inkonsekvens i data.
Hur fältet fungerar
Odoo bygger på ett ramverk kallat Odoo ORM (Object-Relational Mapping). Varje formulär och post i gränssnittet mappas till en Python-modell och en databas-tabell. När du skapar ett anpassat fält registreras det i ORM och den motsvarande kolumnen skapas i PostgreSQL automatiskt.
Det som gör Odoos datamodell flexibel är att du inte ändrar källkoden — du utökar modellen via metadata som sparas i ir.model.fields. Vid uppstart läser Odoo den tabellen och bygger fälten dynamiskt.
Fält definierade i kod vs. fält definierade i databasen
I traditionell Odoo-utveckling definieras fält i Python-klasser med Odoos fält-API. Ett exempel är att lägga till ett textfält i en modell bytt i koden.
from odoo import models, fields
class SaleOrder(models.Model):
_inherit = 'sale.order'
cost_center = fields.Char(string='Cost Center')
Fält som skapas via gränssnittet eller API lagras istället i ir.model.fields med state = 'manual'. Båda metoderna skapar en riktig databas-kolumn och ser likadana ut för användaren i gränssnittet.
Relationella fält och ömsesidighet
När du skapar ett Many2one-fält som pekar mot en annan modell förväntar sig Odoo ofta en motsvarande One2many på andra sidan. Det är inte bara en rekommendation — så ORM:en kan navigera relationerna mellan poster.
Till exempel, om du lägger till x_project_id (Many2one till project.project) på en order, bör projektmodellen ha x_sale_order_ids (One2many tillbaka till sale.order). Utan detta blir det svårt att se kopplade order från projektets sida i standardgränssnittet.
Beräknade anpassade fält
Beräknade fält i Odoo får sitt värde automatiskt utifrån andra fält. Tekniskt kräver de en Python-metod kopplad via parameter compute. Sådana fält är normalt skrivskyddade och uppdateras när beroenden ändras.
Beräknade fält är kraftfulla men kräver kod. De kan vanligtvis inte skapas renodlat via Odoo Studio utan developer-läge och viss Python-kunskap.
Praktiska användningsområden i företag
Egne fält används i nästan varje Odoo-projekt vi arbetar med. Här är fem vanliga verkliga exempel från affärsprocesser.
1. CRM: Mer nyanserad kvalificering av leads
Odoo fångar grundläggande kontaktuppgifter, men många säljorganisationer behöver mer. Ett valfält för "Bransch" eller ett Many2one som länkar till en intern modell för "Marknadssegment" hjälper säljarna att klassificera leads snabbare och ger chefer möjlighet att rapportera pipeline per segment.
2. Försäljning: Interna projektkoder
Företag som fakturerar per projekt vill ofta fästa en intern projektkod eller budgetreferens på offert och order. Ett enkelt textfält "Projektkod" på sale.order syns i utskrifter och kan användas för filtrering och gruppering i rapporter utan full projektintegration.
3. Lager: Artikelspecifika attribut
Utöver Odoos standardproduktfält kan vissa branscher behöva tekniska specifikationer. En tillverkare kan lägga till fält som "Garanti (månader)" (Integer), "Certifiering" (Selection) eller "Ursprungsland" (Many2one till res.country). Dessa blir en naturlig del av produktkortet och syns i lagerrapporter.
4. Ekonomi: Kostnadsställe och budgetmärkning
Ekonomiteam vill ofta koppla fakturor eller konteringar till kostnadsställen eller budgetposter. Ett Many2one-fält på account.move mot en egen "Kostnadsställe"-modell ger detaljerad kostnadsfördelning utan att förändra Odoos analyskonto-struktur. Fältet fungerar direkt i filter, pivottabeller och export.
5. HR: Eget onboardinginnehåll
HR samlar ofta in information vid anställning som inte finns i standardfält: landspecifika kontraktstyper, interna kompetenskategorier eller bilpolicy-referenser. Anpassade fält på hr.employee håller denna data i Odoo istället för i externa kalkylblad — sökbart och rapportbart.
Skapa eller anpassa fältet
Det finns två huvudsakliga sätt att skapa anpassade fält i Odoo. Valet styrs av tillgänglig teknisk kompetens och hur avancerad logiken behöver vara.
Alternativ 1: Odoo Studio (ingen kod)
Odoo Studio är det snabbaste sättet för användare utan utvecklarkompetens. Med Studio aktiverat kan du lägga till ett fält i några klick:
- Öppna appen och den posttyp där du vill lägga till fältet (t.ex. offertformuläret)
- Klicka på pennikonen för att gå in i Studio-läge
- Dra önskad fälttyp från panelen till formuläret
- Sätt etikett, tekniskt namn och inställningar
- Spara och lämna Studio
Studio skapar fältet i ir.model.fields med x_studio_-prefix och lägger in det i vyn direkt. Ingen distribution eller serveromstart krävs — bra för enkla fält som saknar komplex logik.
Alternativ 2: Tekniska anpassningar via API
För utvecklingsteam kan fält skapas programmässigt via XML-RPC/API eller genom att skriva ett Python-modul. Detta passar när du behöver beräknade fält, avancerade domäner eller vill ha fälten i versionshanterad kod.
Exempelvis kan du via API skapa ett urvalsfält på sale.order enligt följande arbetsflöde:
# Hitta modell-id för sale.order
model = models.execute_kw(
db, uid, api_key,
'ir.model', 'search_read',
[['model', '=', 'sale.order']],
{'fields': ['id', 'name']}
)[0]
# Skapa det anpassade fältet
field_id = models.execute_kw(
db, uid, api_key,
'ir.model.fields', 'create',
[{
'name': 'x_project_type',
'field_description': 'Project Type',
'model_id': model['id'],
'ttype': 'selection',
'selection': [('internal', 'Internal'), ('client', 'Client'), ('rd', 'R&D')],
'state': 'manual',
}]
)
Det här är en normal del av Odoo-utvecklares verktygslåda när man vill lägga till fält utan att ändra modulfiler — användbart för fjärrkonfigurationer och automatiserad deployment.
I en full Python-modul definierar du fälten i modellklasser och laddar dem via Odoo-modulmekanismen. Det är mest hållbart för fält som ska överleva uppgraderingar och spåras i versionskontroll.
Lägga till fältet i en vy
Att skapa ett fält gör det inte automatiskt synligt i gränssnittet — du måste också lägga in det i rätt formulär- eller listvy. Med Studio händer detta samtidigt. Vid teknisk anpassning ändrar du vy-XML eller skapar en ärvd vy som injicerar fältet på rätt plats.
Rekommenderade arbetssätt
Anpassade fält är lätta att lägga till, men bristande planering leder till underhållsproblem. Följande rutiner hjälper dig hålla ordning.
Använd valfält istället för fri text när det går
När möjliga värden är kända, välj ett Selection-fält framför ett Char-fält. Fri text leder till stavningsvarianter och olika representationer ("Kund", "kund", "KUND") som gör filtrering och rapporter osäkra. En rullista ger konsekventa värden från start.
Ge fälten tydliga och konsekventa namn
Det tekniska namnet (x_project_type) bör beskriva vad fältet innehåller, inte var det ligger i formuläret. Ett namn som x_field_1 blir omöjligt att hålla reda på. Använd en strukturerad namngivning och dokumentera syftet.
Överbelasta inte befintliga modeller
Om du lägger tio fält på sale.order kan det vara ett tecken på att en egen modell vore bättre. När flera fält hör ihop och representerar en separat affärsenhet (projekt, avtal, certifikat) — skapa en modell och länka med Many2one.
Testa alltid på en staging-databas först
Lägg aldrig ut fält direkt i produktion utan att ha testat i en kopia. Fältskapande är oftast säkert, men fel modell eller typ kan kräva manuellt arbete. En stagingmiljö fångar sådana misstag tidigt.
Dokumentera era anpassade fält
För daglig förvaltning: för varje fält notera modell, tekniskt namn, syfte och vem som begärde det. Odoo-inställningar växer med tiden — utan dokumentation blir det omöjligt att avgöra vad som används och vad som kan tas bort.
Välj rätt verktyg för beräkningslogik
Om ett fälts värde beror på andra fält, använd ett beräknat fält i stället för att kräva manuell inmatning. Det minskar fel och håller datan konsekvent. Beräknade fält är väl täckta i Odoos tekniska dokumentation.
Vanliga fallgropar
Erfarna team stöter fortfarande på samma återkommande misstag. Här är de vanligaste problemen och hur man undviker dem.
Glömma One2many när man skapar Many2one
Det vanligaste misstaget är att lägga ett Many2one på modell A som pekar på B utan att skapa motsvarande One2many på B. Då kan man inte navigera tillbaka från B till relaterade A-poster i gränssnittet. Skapa alltid båda sidor samtidigt.
Radera ett fält som innehåller data
Att ta bort ett anpassat fält tar permanent bort kolumnen och all dess data — utan ångrafunktion. Om det finns minsta chans att ni behöver datan framöver, döljer eller arkivera fältet i stället för att radera.
Skapa fält direkt i produktion
Att göra ändringar direkt i en produktionsdatabas utan att testa innebär onödiga risker. Ett fel i vy-konfigurationen kan leda till användarfel. Validera alltid i testmiljö först.
Namnkonflikter med standardfält
Odoo blockerar ett fältnamn som redan finns, men du kan av misstag skapa ett fält som skuggar ett fält från en modul som installeras senare. Använd ett företags-specifikt prefix (t.ex. x_acme_) för att minska risken.
Lägga till fält i vy utan att tänka på användarupplevelse
Bara för att ett fält kan visas betyder det inte att det bör vara synligt som standard. Överfulla formulär försenar användare. Lägg mindre relevanta fält i egna flikar eller gör dem villkorligt synliga.
Blanda Studio-fält och kodfälter utan plan
Om ni kombinerar Studio och kod utan strategi kan fält få överlappande funktioner eller konflikter i namn. Bestäm på förhand: antingen Studio för enkla no-code-ändringar och kod för komplex logik, eller hantera allt via kod för enhetlighet.
Sammanfattning
Anpassade fält är en enkel och effektiv metod att forma Odoo efter ert företag. De kräver inga ändringar i källkod, integreras smidigt med plattformen och ger användarna exakt den datainsamling som behövs utan omvägar.
Nyckeln är planering: välj passande fälttyp, ge tydliga namn, följ relationskonventioner och dokumentera. En genomtänkt fältarkitektur gör Odoo lättare att förvalta och enklare att vidareutveckla i takt med att verksamheten växer.
Oavsett om ni använder Odoo Studio för snabba no-code-fält eller skriver Python-moduler i ett större anpassningsprojekt är principerna desamma: matcha fältet med databehovet, håll modellen ren och testa alltid innan produktion.
På Dasolo hjälper vi företag att implementera, anpassa och optimera Odoo så att systemet speglar verkliga arbetsflöden. Behöver ni några enstaka fält tillagt eller en hel modul utvecklad från grunden finns vårt team tillgängligt.
Kontakta oss gärna för rådgivning kring er Odoo-lösning. Vi hjälper till att granska er nuvarande konfiguration och rekommenderar den renaste vägen framåt.