Hoppa till innehåll

Char Field i Odoo – Komplett Guide för Utvecklare och Admins

Allt du behöver veta om fältet Char i Odoo: från grundläggande användning till avancerad teknisk anpassning
6 mars 2026 av
Char Field i Odoo – Komplett Guide för Utvecklare och Admins
Dasolo
| Inga kommentarer ännu

Inledning


Char‑fältet är en av byggstenarna i Odoo‑modellen. När du ser ett kontaktnamn, en artikelreferens eller en kort kommentar i ett dokument så ser du i praktiken ett Char‑fält — även om ingen någonsin talat om det så förblir det själva fältet som bär värdet.


Att förstå detta fälts egenskaper spelar roll oavsett om du är slutanvändare som lägger upp formulär i Odoo Studio, utvecklare som bygger moduler eller konsult som hjälper en kund att designa sin lösning. Rätt val här förenklar drift, sökbarhet och integrationer.


Char ser kanske ut som ett enkelt textfält, men flera detaljer påverkar hur det beter sig i databasen och i gränssnittet. Den här guiden täcker vad fältet lagrar, hur det visas för användaren, hur du lägger till eller justerar det — samt konkreta affärsscenarier där valet av fälttyp påverkar kvaliteten på data och processer.

Vad är ett Char‑fält i Odoo


I Odoos ORM är Char konstruerat för korta textsträngar. I databasen blir det antingen en VARCHAR med bestämd längd eller TEXT utan gräns beroende på om du sätter en storleksbegränsning.


För användaren framträder Char som ett enkellinjigt textfält i formulär och som enkel text i listvyer. Det är standardvalet för namn, koder, referenser och andra små textbitar som normalt får plats på en rad.


Exemplet i Python visar hur du deklarerar fältet i en modell — i praktiken är det här utvecklare anger etikett, längd och andra egenskaper som påverkar beteendet.

Kodexempel visar hur ett fält definieras i en modellklass och vilka parametrar som är vanliga att ställa in när man skapar ett kundreferensfält på säljordernivå.

Parametern som visas i kodavgör etiketten i gränssnittet. Size sätter maximala tecken, och index skapar en databasindex för snabbare sökningar — alla parametrar har tydlig inverkan på användbarheten.


I Odoo Studio kallas samma typ fält för Text (enkelrad). Fälten får automatiskt prefixet x_studio_ när de skapas via Studio, medan fältnamn i kod eller API bestäms manuellt av utvecklaren.

Hur fältet fungerar


När du definierar ett Char‑fält i en modul sköper Odoo själva kolumnskapandet i databasen vid installation eller uppgradering. Du behöver därför normalt inte skriva SQL‑migreringar för fältet.


I PostgreSQL sparas Char utan storleksbegränsning som TEXT och med storlek som VARCHAR(n). Prestandaskillnaden är i praktiken minimal — huvudsaken med size är att slå fast en maximal längd för datakvalitet.


Viktiga fältattribut

Nedan de viktigaste inställningarna du möter när du jobbar med Char i Odoo och vad de betyder i praktiken.

  • size: Max antal tecken. Om du hoppar över den finns ingen databasbegränsning för längden.
  • translate: Aktiverar översättning per språk för fältvärdet — viktigt i flerspråkiga installationer där fältet ska visas lokalt.
  • required: Gör fältet obligatoriskt i gränssnittet och på modellnivå.
  • default: Anger standardvärde när nya poster skapas.
  • index: Skapar ett databasindex för snabbare filtrering och sökning på fältet.
  • compute: Länkar till en metod som beräknar värdet dynamiskt, användbart för härledda eller kombinerade referenser.
  • store: I kombination med compute bestämmer det om det beräknade värdet sparas i databasen.
  • copy: Bestämmer om värdet kopieras vid duplicering av poster. Standard är True.

Hur det syns i vyer

I formulär renderas Char som ett klassiskt textinputfält; i listvyer visas det som enkel text. I sökfält stöder det vanliga operatörer som innehåller, lika med och börjar med direkt utan extra konfiguration.


Du kan också ge Char‑fältet ett widget för att ändra beteende — till exempel gör widgetar för email och url fältet klickbart eller öppnar länken i ny flik.


Interaktion med Odoo ORM

För utvecklare är läsning och skrivning av Char‑fält helt rakt på sak: värdet finns på record‑objektet, och Odoo tar hand om grundläggande validering och sanitiering enligt fältdefinitionen. Det gör fältet smidigt i vardaglig utveckling eftersom inga komplexa konverteringar krävs.

Affärsexempel där Char fälten används


Char‑fält dyker upp överallt i en Odoo‑installation. Här följer fem praktiska exempel från vanliga affärsprocesser där valet påverkar sökbarhet, dokument och integrationer.


CRM: Kundkoder och interna referenser

Företag använder ofta interna kundnummer för att skilja mellan liknande företagsnamn. Ett Char‑fält på res.partner kan lagra detta så att säljare snabbt hittar rätt kund i listor, på offerter och fakturor utan missförstånd.


Sälj: Kundens inköpsorderns referens

När kunder skickar inköpsordrar behöver deras PO‑nummer komma med på fakturor och följesedlar. Ett Char‑fält för client_order_ref ser till att referensen följer med och minskar behovet av efterfrågningar.


Lager: Interna artikelkoder

default_code på product.template är ett typiskt Char‑fält som används i lagret, vid streckkodsläsning och i inköpsordrar. Att hålla detta fält konsekvent är en prioritet för datakvalitet i lagerlösningar.


Bokföring: Skatte‑ och organisationsnummer

Momsnummer och företagsregistreringsnummer sparas som Char‑fält på partnerposter och kan automatiskt skrivas ut på kundfakturor och leverantörsfakturor när systemet är korrekt konfigurerat.


HR: Personnummer och ID‑koder

Personalavdelningar behöver ofta lagra anställningsnummer, passnummer eller badgekoder. Ett Char‑fält på employee‑modellen gör det enkelt att knyta Odoo till löne‑ eller passersystem utan fullskalig integration till en början.

Skapa eller anpassa ett Char‑fält


Tre sätt att skapa ett Char‑fält


Beroende på teknisk nivå och driftsmodell finns tre vanliga vägar att lägga till ett Char‑fält i Odoo.

Via Odoo Studio (ingen kod)

  1. Odoo Studio är verktyget för snabba ändringar utan utveckling. Steg för att lägga till ett enkelt textfält:
  2. Öppna Studio från huvudmenyn.
  3. Gå till det formulär där fältet ska ligga och dra in en Text (enkelrad) från verktygsmenyn.
  4. Sätt etikett, obligatorisk status och eventuell längd i egenskapsrutan.
  5. Spara och stäng Studio.

Studio skapar fältet med x_studio_ prefix och lägger automatiskt till det i vyn — ingen manuell databasmigration krävs.


Via Python i en anpassad modul

För ändringar som ska versionshanteras och distribueras till flera miljöer rekommenderas att definiera fält i en modul med Python.

Kodexempel visar hur man ärver en modell och deklarerar ett nytt Char‑fält med storlek, index och copy‑inställning. Detta är standardmönstret för produktionsändringar.

Efter att fältet lagts till i modellen måste du lägga in det i rätt vy‑XML så det syns i gränssnittet. Odoo skapar kolumnen i databasen vid installation eller uppgradering av modulen.


Via XML‑RPC API

Om du automatiserar konfigurationer eller skapar fält från externa skript går det att skapa fält via XML‑RPC, vilket är användbart i deploy‑pipelines eller masskonfigurationer.

Exemplet visar hur man anropar ir.model.fields.create med ttype='char' och andra attribut för att programmatisk lägga till ett fält.

State='manual' markerar att fältet skapats manuellt (inte av en modul), vilket är rätt inställning för fält som kommer från Studio eller externa API‑skript och underlättar hantering.

Goda riktlinjer


1. Ange size när du vet maximal längd

Om fältet bara ska rymma tvåbokstavskoder, telefonprefix eller fasta identifierare — sätt size. Det kommunicerar tydlig avsikt och förhindrar felinmatning som annars kan skapa problem längre fram.


2. Indexera fält du söker ofta

Är fältet ett vanligt sökfilter — som kundkod eller orderreferens — aktivera index. På stora tabeller kan ett index reducera söktiden från flera sekunder till ungefär en sekund eller mindre.


3. Använd translate=True för flerspråkig text

Om användarna behöver se olika värden beroende på språk (produktnamn, befattningar etc.) aktivera översättning så att varje språkvisning får rätt text.


4. Ge fälten tydliga tekniska namn

I moduler: döp fält beskrivande, till exempel x_customer_erp_id. I Studio: byt namn innan distribution. Tekniska namn är svåra att byta när data väl finns lagrad.


5. Beräknade fält för härledda referenser

Använd compute för att bygga referenser av andra fält, och store=True om resultatet ska sparas för sökbarhet och rapporter — logiken centraliseras i en metod men värdet blir sökbart och exportvänligt.

Vanliga fallgropar


Inga gränser = risk för dålig data

Utan size kan användare klistra in långa textstycken i ett referensfält. Det skapar problem när värdet senare ska visas på tryckta dokument eller skickas till system med begränsningar. Sätt rimliga gränser där det spelar roll.


Saknade index på frekvent sökta fält

Om du inte indexerar fält som ofta används i filter tvingas databasen göra full table scans när datamängden växer — ett vanligt problem som upptäcks först när systemen blir större.


Att förväxla Char och Text

Char är för enkellinjig kort text, Text för längre flerradigt innehåll. Använd inte Char för adresser, anteckningar eller beskrivningar som kan behöva radbrytning — det blir dålig användarupplevelse och svårare att läsa och redigera.


Glömma translate på språkberoende fält

Utan translate=True ser alla användare samma värde, vilket ställer till problem för dokument som ska vara lokaliserade. Aktivera översättning för kundnära fält som ska variera med språk.


Använda Char när Selection eller relation är bättre

Om ett fält alltid har ett begränsat antal värden bör du använda Selection eller Many2one. Fri text leder till stavfel och spridning av varianter som förstör rapportering och gruppering.

Vanliga frågor


Vad skiljer Char från Text i Odoo?

Char är kort, enkellinjigt och visas som ett textinput. Text är avsett för längre, flerradigt innehåll med möjlighet till radbrytningar. Välj Char för namn och koder, Text för beskrivningar och längre noteringar.


Kan jag begränsa antal tecken i ett Char‑fält?

Ja — i Python med size=, till exempel fields.Char(size=64). I Studio sätts samma gräns i fältets egenskaper. Utan size finns ingen databasbunden längdbegränsning.


Hur får jag ett Char‑fält i sökfältet?

Add the field to the search view of the model. In Studio, enable the search option in the field properties. In code, add <field name="your_char_field"/> inside the <search> view definition in your XML. Once added, users can filter records by that field directly from the search bar.


Kan jag lagra siffror i ett Char‑fält?

Tekniskt ja, men använd siffriga fälttyper (Integer, Float) för beräkningar eller numeriska jämförelser. Char passar för siffror som ska behandlas som text — postnummer, telefonnummer, IBAN eller serienummer.


Hur skapar jag ett beräknat Char‑fält som också sparas?

Definiera compute='_compute_x' och store=True. Använd @api.depends() för att ange vilka fält som påverkar beräkningen. Med store=True sparas resultatet i databasen och kan sökas och exporteras utan att beräknas om vid varje läsning.

Sammanfattning


Sammanfattningsvis är Char‑fältet enkelt i bruk men centralt i alla Odoo‑flöden. Många använder det dagligen utan att fundera över konsekvenserna, men beslut om storlek, indexering, översättning och rätt fälttyp påverkar både användarupplevelse och datakvalitet.


Oavsett om du lägger till ett fält via Studio, deklarerar det i en modul eller skapar det programatiskt via API:et, hjälper de här principerna dig att göra ett hållbart val från början.


En välgenomtänkt datamodell som använder rätt fälttyper är en av nycklarna till en framgångsrik Odoo‑implementering. Char‑fältet är ett litet men viktigt element i den modellen och förtjänar att hanteras med omsorg.

På Dasolo hjälper vi företag att implementera, anpassa och optimera Odoo i alla delar av verksamheten. Behöver ni stöd med datamodellering, anpassade fält eller att bygga en modul från grunden så har vi erfarenheten. Kontakta oss gärna så tar vi ett möte om ditt Odoo‑projekt.

Char Field i Odoo – Komplett Guide för Utvecklare och Admins
Dasolo 6 mars 2026
Dela detta inlägg
Logga in att lämna en kommentar