Overslaan naar inhoud

Char Field in Odoo: De Complete Gids voor Developers

Alles wat je moet weten over het Char-veld in het Odoo-datamodel — van eenvoudige toepassingen tot technische aanpassingen
6 maart 2026 in
Char Field in Odoo: De Complete Gids voor Developers
Dasolo
| Nog geen reacties

Introductie


Het Char-veld is één van de meest gebruikte en eenvoudig ogende veldtypes in Odoo. Wanneer je een klantnaam, een productcode of een bestelreferentie ziet, heb je vaak al met een Char-veld gewerkt — meestal zonder het expliciet te beseffen.


Of je nu als eindgebruiker snel een formulier bouwt met Odoo Studio, als ontwikkelaar modules schrijft of als consultant een implementatie ontwerpt: kennis van hoe het Char-veld zich gedraagt is praktisch en voorkomt fouten later in het project.


Achter die simpele één-regelige invoer liggen een paar technische keuzes en eigenschappen die invloed hebben op zoekprestaties, data-integriteit en meertaligheid. Deze handleiding behandelt wat het veld opslaat, hoe het in de interface verschijnt, hoe je het toevoegt en aanpast, en welke concrete bedrijfscases er baat bij hebben.

Wat is het Char-veld in Odoo


In de Odoo ORM dient het Char-veld om korte tekstwaarden op te slaan. Afhankelijk van of je een maximale lengte opgeeft, wordt het in PostgreSQL als VARCHAR(n) of als TEXT vastgelegd.


Voor gebruikers verschijnt een Char-veld als éénregelig tekstvak in formulieren en als gewone tekstkolom in overzichten. Het is de standaardkeuze voor namen, referenties, codes en andere korte tekstuele waarden die je op één regel verwacht.


Technisch gezien definieer je het veld in het Python-model van je module — maar de precieze syntaxis en voorbeelden laat ik hieronder zien in de ontwikkelaarssectie.

Voorbeeld in een Python-model:

De parameter voor het label bepaalt de zichtbare naam in de gebruikersinterface. Grootte (size) is optioneel en legt een maximumaantal karakters vast. Met index maak je een database-index aan om zoeken te versnellen.


In Odoo Studio heet dit veldtype ‘Text (single line)’. Studio genereert automatisch een technische naam met het voorvoegsel x_studio_. Als je het veld via code of API aanmaakt, bepaal je zelf de technische naam.

Hoe het veld werkt


Bij het installeren of updaten van een module maakt Odoo automatisch de bijbehorende databasekolom aan. Je hoeft doorgaans geen handmatige SQL-migraties te schrijven.


Zonder opgegeven size slaat PostgreSQL het veld op als TEXT; met size gebruik je VARCHAR(n). In de praktijk is het verschil vooral een beperking op lengte — PostgreSQL verwerkt beide efficiënt.


Belangrijke eigenschappen van het Char-veld

Dit zijn de kernattributen die je moet kennen wanneer je met Char-velden werkt in Odoo:

  • size: Hiermee bepaal je het maximale aantal karakters. Laat je het weg, dan is er geen databasegebaseerde limiet.
  • translate: Zet je dit op True, dan kan de inhoud per taal vertaald worden — handig in meertalige omgevingen.
  • required: Maakt het veld verplicht in de interface en op modelniveau.
  • default: Stelt een automatische standaardwaarde in voor nieuwe records.
  • index: Maakt een database-index aan voor sneller filteren en zoeken op dat veld.
  • compute: Koppelt een Python-methode die de waarde berekent — nuttig voor afgeleide of samengestelde waarden.
  • store: In combinatie met compute bepaalt dit of de berekende waarde in de database wordt opgeslagen.
  • copy: Bepaalt of de waarde wordt gekopieerd bij dupliceren; standaard True.

Weergave in views

In formulierweergaven zie je een Char-veld als een standaard input-veld (één regel). In lijstweergaven toont het als gewone tekst. In de zoekbalk ondersteunt het filters zoals bevat, is gelijk aan en begint met.


Je kunt widgets gebruiken om de presentatie te veranderen: een email-widget maakt het veld klikbaar als e-mailadres, een url-widget opent het in een nieuw tabblad, enzovoort.


Interactie met de Odoo ORM

Voor ontwikkelaars werkt lezen en schrijven van Char-velden zoals bij andere velden: je leest de waarde van het recordobject en Odoo zorgt voor de nodige validatie en serialisatie. Er zijn geen ingewikkelde conversies nodig, wat het veld breed inzetbaar maakt.

Praktische bedrijfsvoorbeelden


Waar je Char-velden in de praktijk tegenkomt


CRM: klantreferenties

Veel bedrijven bewaren interne klantcodes in een Char-veld op res.partner. Zo kun je klanten snel terugvinden, en verschijnen die referenties automatisch op offertes en facturen — handig als meerdere klanten vergelijkbare namen hebben.


Sales: referenties van klantbestellingen

Wanneer klanten een bestelnummer doorgeven, moet dat op facturen en pakbonnen verschijnen. Het standaardveld client_order_ref op sale.order is een Char-veld dat deze informatie doorgeeft en zo veel administratief heen-en-weer voorkomt.


Magazijn: interne productcodes

Het default_code-veld op product.template is een Char-veld dat de interne referentie bewaart die in magazijnen, barcodescanners en bestellingen gebruikt wordt. Consistente invulling van dit veld is cruciaal voor voorraadbeheer en scanningsprocessen.


Accounting: BTW- en registratienummers

BTW-nummers en bedrijfsidentificaties worden doorgaans als Char-velden op partnerrecords bewaard. Correcte opslag zorgt dat deze gegevens automatisch verschijnen op facturen en in rapporten, wat fouten en handmatige correcties vermindert.


HR: personeelsnummers en badges

HR-teams gebruiken Char-velden om personeels-ID’s, badgecodes of externe identifiers vast te leggen. Dat maakt koppelingen met payroll- of toegangscontrolesystemen eenvoudiger zonder meteen een volledige integratie te bouwen.

Een Char-veld aanmaken of aanpassen


Drie manieren om een Char-veld toe te voegen


Via Odoo Studio (geen code)

Odoo Studio is de ingebouwde low-code tool. Zo voeg je snel een Char-veld toe zonder code te schrijven:

  1. Open Studio vanuit het hoofdmenu.
  2. Ga naar het formulier waar je het veld wilt toevoegen.
  3. Sleep een Text (single line)-veld van de zijbalk naar het formulier.
  4. Stel label, verplichtheid en eventueel een maximale lengte in de veldinstellingen.
  5. Sla op en sluit Studio.

Studio creëert het veld met een x_studio_-voorvoegsel en voegt het automatisch aan het formulier toe; er is geen migratie van jouw kant nodig.


Via Python in een custom module

Voor aanpassingen die versiebeheer en distributie over meerdere omgevingen vereisen, definieer je het veld in het Python-model van een module:

Na het toevoegen van het veld in het model zet je het ook in de view-XML zodat het zichtbaar is in de interface. Odoo maakt de databasekolom aan tijdens installatie of upgrade van de module.

Zorg dat je het veld zowel in de models.py als in de relevante view-XML opneemt, anders verschijnt het niet in de formulieren of lijsten.


Via de XML-RPC API

Als je automatisatie of externe scripts gebruikt kun je velden ook programatisch aanmaken via de API:

Wanneer je velden via de API aanmaakt, zijn er parameters om technische naam, label, type en lengte te bepalen.

De staat 'manual' geeft aan dat het veld handmatig is gemaakt (niet door een module) — dit is typisch voor velden die via Studio of API worden toegevoegd.

Aanbevolen werkwijzen


Praktische richtlijnen

1) Geef een size wanneer je de maximale lengte kent


Voor vaste formaten — landcodes, telefoonnummers of vaste identifiers — leg een size vast. Dat voorkomt dat gebruikers per ongeluk veel tekst plakken in een veld dat slechts een korte code moet bevatten.

2) Indexeer velden die vaak gebruikt worden in zoekacties


Als een veld frequent in filters of zoekbalken gebruikt wordt (bijv. klantcode of bestelreferentie), zet index=True. Bij grote tabellen scheelt dat vaak enkele seconden in reactietijd.

3) Gebruik translate=True voor meertalige waarden


Als het veld tekst bevat die per taal verschilt (productnamen, functietitels, klantgerichte labels), activeer vertalingen zodat gebruikers in hun eigen taal de juiste waarde zien.

4) Kies duidelijke technische namen


Werk met beschrijvende velden zoals x_customer_erp_id in plaats van cryptische namen zoals x_field1. Technische namen wijzigen is lastig zodra data is opgeslagen.

5) Gebruik compute voor afgeleide referenties

Veelvoorkomende valkuilen


Je kunt een Char-veld automatisch laten opbouwen — bijvoorbeeld jaar + sequentie — via compute met store=True, zodat het resultaat doorzoekbaar en exporteerbaar blijft.

Risico's van geen size-constraint


Zonder limiet kunnen gebruikers lange tekst plakken in een referentieveld, wat problemen geeft bij afdrukken of bij verzending naar systemen die een grenswaarde hebben. Denk na over realistische maxima en leg die vast.

Ontbrekende indexen op veelgebruikte velden


Zonder index veroorzaakt filteren op grote tabellen een volledige scan, iets wat pas opvalt als de database groeit. Voeg indexen toe voor zoekvelden vanaf het begin.

Het Char-veld niet verwarren met Text


Char is bedoeld voor korte, éénregelige waarden; Text voor langere, meerregelige teksten. Gebruik Char niet voor adressen of notities — dat beperkt de gebruikservaring en verhindert regelafbrekingen.

Vergeten translate bij meertalige velden


Als je gebruikers in meerdere talen hebt en vergeet translate=True te zetten op zichtbare velden, zien alle gebruikers exact dezelfde tekst. Dat kan verwarring geven op klantdocumenten of in de gebruikersinterface.

Char gebruiken waar een Selection of relatie beter is

Veelgestelde vragen


Als een veld slechts één van een vast aantal waarden bevat (categorie, status, land), kies dan een Selection of Many2one. Vrije tekst leidt tot variaties en typfouten die rapportage en groepering breken.

Wat is het verschil tussen Char en Text in Odoo?


Char slaat korte éénregelige tekst op en toont een tekstinvoer; Text is bedoeld voor langere, meerregelige inhoud en toont een textarea. Gebruik Char voor namen en codes, Text voor omschrijvingen en notities.

Kan ik het aantal tekens in een Char-veld beperken?


Ja — in Python definieer je fields.Char(size=64). In Studio stel je de limiet in via de veldinstellingen. Zonder size is er geen database-gedwongen limiet.

Hoe maak ik een Char-veld doorzoekbaar in de zoekbalk?


Can I store numbers in a Char field?

Kan ik cijfers in een Char-veld opslaan?


Technisch kan dat, maar gebruik Char niet voor getallen die je wilt rekenen of vergelijken. Gebruik Integer of Float voor hoeveelheden en bedragen. Char is prima voor postcodes, telefoonnummers, IBAN’s of serienummers — waarden die je als tekst behandelt.

Hoe maak ik een berekend Char-veld dat ook opgeslagen wordt?

Slotwoord


Definieer het veld met compute='_compute_my_field' en store=True. Gebruik @api.depends(...) om triggers voor herberekening te declareren. Met store=True wordt de waarde in de database bewaard en is hij beschikbaar voor zoeken en export zonder bij elke leesactie te worden herberekend.


Het Char-veld lijkt eenvoudig, maar kennis van de juiste instellingen voorkomt dat je later tegen datakwaliteits- en performanceproblemen aanloopt. Goede keuzes zorgen voor soepelere processen en betrouwbaardere rapporten.


Of je nu snel iets toevoegt met Studio, een veld definieert in een custom module of velden programatisch aanmaakt via de API: de hierboven beschreven patronen helpen je om het in één keer goed te doen.

Een goed datamodel met de juiste veldtypes is een fundament voor een succesvolle Odoo-implementatie. Het Char-veld is een klein, maar essentieel onderdeel daarvan — en het verdient een bewuste aanpak. Bij Dasolo begeleiden we bedrijven bij implementatie, maatwerk en optimalisatie van Odoo in alle afdelingen. Of je nu hulp nodig hebt bij datamodellering, het toevoegen van velden of het bouwen van modules: ons team ondersteunt je graag. Neem contact met ons op en laten we je Odoo-project bespreken.

Char Field in Odoo: De Complete Gids voor Developers
Dasolo 6 maart 2026
Deel deze post
Aanmelden om een reactie achter te laten