Overslaan naar inhoud

Tekstveld in Odoo: De Complete Gids

Alles wat je moet weten over het Tekstveld in het Odoo-datamodel, van basisgebruik tot technische aanpassing
6 maart 2026 in
Tekstveld in Odoo: De Complete Gids
Dasolo
| Nog geen reacties

Inleiding


Het Tekstveld is een van de meest praktische veldtypes in Odoo. Elke keer dat een gebruiker een notitiegebied invult, een productbeschrijving schrijft of een interne opmerking toevoegt aan een verkooporder, is de kans groot dat ze in een Tekstveld typen.


Het lijkt een eenvoudig tekstgebied in de interface, maar het begrijpen van de eigenschappen en hoe het past in het Odoo-datamodel en ORM maakt een echt verschil wanneer je formulieren ontwerpt, aangepaste modules bouwt of Odoo Studio-velden voor je team instelt.

Deze gids behandelt alles, van wat het Tekstveld opslaat en hoe het zich gedraagt, tot echte zakelijke gebruikscases, technische aanpassing, beste praktijken en de fouten die de meeste mensen maken wanneer ze naar dit veldtype grijpen.

Wat is het Tekstveld in Odoo


In de Odoo ORM is fields.Text het veldtype voor het opslaan van meerregelige platte tekst. Het komt overeen met een TEXT kolom in PostgreSQL, zonder lengtebeperkingen. Gebruikers kunnen een enkele zin of meerdere alinea's schrijven, en het veld verwerkt het even goed.


In formulieren wordt het weergegeven als een aanpasbaar <textarea> element. In lijstweergaven verschijnt het als afgebroken platte tekst. In zoekweergaven ondersteunt het tekstgebaseerde filtering, net als het Char-veld.


Hier is hoe een basisdefinitie van een Text-veld eruitziet in een Python-module:

from odoo import fields, models

class SaleOrder(models.Model):
    _inherit = 'sale.order'

    internal_notes = fields.Text(
        string='Interne Notities',
        translate=False,
    )

In Odoo Studio wordt dit veld Multi-Line Text genoemd. Wanneer het via Studio wordt aangemaakt, krijgt Odoo automatisch een x_studio_ prefix. Wanneer je het via code of de XML-RPC API aanmaakt, definieer je zelf de technische naam.


Hoe het verschilt van Char en Html

Drie veldtypes in Odoo kunnen tekstinhoud opslaan, en weten wanneer je welke moet gebruiken is een veelvoorkomend punt van verwarring:


  • Char-veld: Enkele regel tekstinvoer. Het beste voor korte waarden zoals namen, codes en referenties. Ondersteunt een optionele limiet op de grootte.
  • Text-veld: Multi-regel textarea. Het beste voor notities, beschrijvingen en vrije opmerkingen. Slaat platte tekst op zonder opmaak.
  • Html-veld: Multi-regel rijke teksteditor. Het beste voor inhoud waarbij opmaak belangrijk is, zoals e-mailsjablonen, productwebbeschrijvingen of webpagina's. Slaat HTML-markup op.

Het Text-veld zit tussen de twee in. Het biedt gebruikers meer ruimte dan een Char-veld, maar zonder de complexiteit van HTML-markup. Voor de meeste interne notities en eenvoudige beschrijvingen is het de juiste keuze in het Odoo-datamodel.

Hoe het Veld Werkt


Wanneer je een Text-veld toevoegt aan een Odoo-model, maakt het framework automatisch de bijbehorende TEXT kolom in PostgreSQL tijdens de installatie of upgrade van de module. Er zijn geen handmatige SQL-migraties betrokken.


In tegenstelling tot het Char-veld is er geen size parameter beschikbaar voor Text-velden. De databasekolom legt geen tekenlimiet op. Dit is opzettelijk: Text-velden zijn bedoeld voor open-ended inhoud waarbij het vooraf beperken van de lengte geen zin zou hebben.


Belangrijke Veld Attributen

De belangrijkste eigenschappen van een Tekstveld in het Odoo-framework:


  • vertalen: Wanneer ingesteld op True, kan de veldwaarde per taal worden vertaald. Nuttig voor meertalige Odoo-instanties waar de tekst verandert afhankelijk van de taal van de gebruiker.
  • vereist: Maakt het veld verplicht op het interface- en ORM-niveau. Gebruikers kunnen een record niet opslaan zonder het in te vullen.
  • standaard: Stelt een automatische standaardwaarde in wanneer nieuwe records worden aangemaakt. Kan een statische string of een aanroepbare methode zijn.
  • berekenen: Koppelt een Python-methode die de veldwaarde dynamisch genereert. Nuttig voor automatisch gegenereerde samenvattingen of afgeleide inhoud.
  • opslaan: Wanneer gecombineerd met berekenen, controleert of de berekende waarde in de database wordt opgeslagen. Met opslaan=True is de waarde doorzoekbaar en beschikbaar in rapporten.
  • kopiëren: Controleert of de veldwaarde is inbegrepen bij het dupliceren van een record. Standaard ingesteld op True. Stel in op False voor notities die niet moeten worden overgedragen naar duplicaten.
  • index: Niet vaak gebruikt op Tekstvelden, aangezien full-text indexing anders werkt dan de eenvoudige B-tree index die wordt gebruikt voor Char-velden. Voor doorzoekbare inhoud is PostgreSQL full-text search of Odoo's ingebouwde filtering over het algemeen voldoende.

Hoe Het Verschijnt in Weergaven

In formulierweergaven wordt het Tekstveld weergegeven als een <textarea> die gebruikers verticaal kunnen aanpassen. In lijstweergaven wordt de inhoud ingekort om in de kolombreedte te passen. In zoekweergaven ondersteunt het tekstgebaseerde zoekfilters direct zodra je het toevoegt aan de definitie van de zoekweergave.


In tegenstelling tot Html-velden laadt het Tekstveld geen WYSIWYG-editor. Gebruikers zien een platte tekstzone zonder opmaakwerkbalk. Wat ze typen is precies wat in de database wordt opgeslagen, met behoud van regeleinden.


Interactie met de Odoo ORM

Vanuit een ontwikkelaarsperspectief is het lezen en schrijven van Tekstvelden in Odoo-ontwikkeling eenvoudig. Je krijgt de waarde rechtstreeks op het recordobject en de ORM zorgt voor alle persistentie. Regelafbrekingen worden opgeslagen zoals ze zijn. Er wordt geen automatische sanering of escaping toegepast op gewone Tekstvelden, wat een van de redenen is waarom het zich onderscheidt van het Html-veld, waar Odoo sanering toepast om XSS-problemen te voorkomen.

Zakelijke Gebruikscases


Tekstvelden komen doorheen Odoo voor op plaatsen waar gebruikers meer dan een enkele regel moeten schrijven. Hier zijn vijf concrete voorbeelden uit echte bedrijfsworkflows.


Verkoop: Interne Ordernotities

Het note veld op verkooporders en het internal_note veld dat in sommige implementaties wordt gebruikt, zijn Tekstvelden. Verkopers gebruiken ze om leveringsinstructies, speciale verpakkingsvereisten of klantvoorkeuren vast te leggen die niet netjes in een gestructureerd veld passen. Deze notities reizen mee met de bestelling en zijn zichtbaar voor operationele teams zonder dat ze op klantdocumenten worden afgedrukt.


Voorraad: Product Interne Notities

Op het productformulier biedt Odoo een Notities tabblad met een Tekstveld voor interne opmerkingen. Magazijnteams gebruiken dit om behandelingsinstructies, kwetsbaarheidswaarschuwingen of leverancier-specifieke informatie te documenteren. Aangezien het gewone tekst is en niet op de website of klantdocumenten wordt weergegeven, is het veilig om operationele details te schrijven die externe partijen niet mogen zien.


Aankoop: Leverancier Voorwaarden en Leveringsinstructies

Op inkooporders stelt een Tekstveld voor leveranciersnotities inkoopteams in staat om specifieke afspraken of leveringsbeperkingen te documenteren die via e-mail of telefoon zijn bevestigd. Het hebben van deze informatie gekoppeld aan het orderrecord voorkomt misverstanden wanneer de goederen arriveren en het oorspronkelijke gesprek niet meer gemakkelijk te vinden is.


CRM: Kansen Samenvattingen en Vergadernotities

Verkoopteams die door de CRM-pijplijn werken, voegen vaak een Tekstveld toe aan kansenrecords voor vrije notities van klantvergaderingen, geopperde bezwaren of context over het aankoopproces. In tegenstelling tot chatterberichten houdt een speciaal Tekstveld deze informatie gestructureerd en gemakkelijk leesbaar in één oogopslag wanneer iemand anders de lead oppakt.


HR: Medewerker en Sollicitant Opmerkingen

HR-teams moeten vaak interviewnotities, opmerkingen over onboarding of prestatieobservaties vastleggen in een veld dat aan het werknemers- of sollicitantenrecord blijft gekoppeld. Een tekstveld op het werknemersmodel is een schone, eenvoudige manier om dit op te slaan zonder een apart model te creëren. Het is doorzoekbaar, afdrukbaar en gemakkelijk op te nemen in aangepaste HR-rapporten.

Een Tekstveld Maken of Aanpassen


Er zijn drie hoofdmanieren om een tekstveld aan een Odoo-model toe te voegen, afhankelijk van je technische context en implementatieaanpak.


Gebruik Odoo Studio (Geen Code)

Odoo Studio is de gemakkelijkste route voor zakelijke gebruikers en consultants die geen code willen schrijven. Om een tekstveld toe te voegen zonder ontwikkelingswerk:

  1. Open Odoo Studio vanuit het hoofdmenu (vereist de Studio-app).
  2. Navigeer naar het formulier waar je het veld wilt hebben.
  3. Sleep een Multi-Line Text veld vanuit de Studio-zijbalk naar het formulier.
  4. Stel het label, de vereiste status en eventuele standaardwaarde in het eigenschappenpaneel van het veld in.
  5. Sla op en sluit Studio.

Studio zorgt automatisch voor de veldcreatie en de update van de weergave. Het veld krijgt een x_studio_ prefix en is onmiddellijk beschikbaar op het formulier zonder enige database-migratie of serverherstart.


Gebruik Python in een Aangepaste Module

Voor elke aanpassing die versiebeheer nodig heeft en over meerdere omgevingen moet worden uitgerold, is het definiëren van het veld in Python de juiste aanpak. Dit is de standaard Odoo-ontwikkelingspraktijk:


from odoo import fields, models

class ResPartner(models.Model):
    _inherit = 'res.partner'

    x_client_notes = fields.Text(
        string='Client Notes',
        translate=False,
        copy=False,
    )

Na het definiëren van het veld in het modelbestand, moet je het toevoegen aan de relevante weergave-XML zodat het in de interface verschijnt. Odoo maakt automatisch de databasekolom aan wanneer je de module installeert of bijwerkt. Dit is de aanbevolen aanpak voor elke Odoo-aanpassing in productie die in de loop van de tijd moet worden onderhouden.


Gebruik de XML-RPC API

Als je Odoo-velden programmatisch beheert, bijvoorbeeld als onderdeel van een implementatiescript of een externe configuratienotitie, kun je Text-velden aanmaken via de XML-RPC API:


field_id = models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'ir.model.fields', 'create',
    [{
        'name': 'x_client_notes',
        'field_description': 'Client Notes',
        'model_id': model_id,
        'ttype': 'text',
        'state': 'manual',
        'translate': False,
        'copy': False,
    }]
)

De ttype: text waarde vertelt Odoo om een Text-veld aan te maken (in tegenstelling tot char voor een Char-veld of html voor een Html-veld). De state: manual instelling geeft aan dat dit veld buiten een module is aangemaakt, wat correct is voor velden die via Studio of programmatisch via de API zijn aangemaakt. Dit is de aanpak die Dasolo gebruikt bij het implementeren van externe veldconfiguraties voor klanten.

Beste Praktijken


1. Gebruik Text wanneer de inhoud echt meerdere regels nodig heeft

De meest voorkomende fout is het grijpen naar een Text-veld wanneer een Char-veld voldoende zou zijn. Als de waarde een naam, een code, een referentie of iets is dat op één regel past, gebruik dan Char. Reserveer Text voor inhoud waar gebruikers zinnen of paragrafen van verwachten te schrijven. Het gebruik van een Text-veld voor een korte enkele waarde creëert een onhandige gebruikerservaring en een misleidend datamodel.


2. Gebruik Html wanneer opmaak belangrijk is

Als gebruikers bulletlijsten, vetgedrukte tekst, hyperlinks of enige visuele opmaak aan de inhoud moeten toevoegen, is het Text-veld de verkeerde keuze. Gebruik in plaats daarvan een Html-veld. Text-velden ondersteunen alleen platte tekst. Gebruikers vragen om opgemaakte inhoud in een platte tekstvak te schrijven, zal leiden tot gefrustreerde gebruikers die opmaakopties verwachten die er niet zijn.


3. Schakel vertalen in voor meertalige inhoud die voor gebruikers zichtbaar is

In bedrijven die Odoo in meerdere talen draaien, moet elk Text-veld dat op klantgerichte documenten of de website verschijnt, translate=True hebben. Dit stelt vertalers in staat om taalspecifieke versies van de inhoud te bieden zonder elkaars werk te overschrijven. Voor interne notities en operationele opmerkingen die gebruikers zelf schrijven, is vertaling meestal niet nodig.


4. Stel copy=False in voor notities die niet gedupliceerd moeten worden

Wanneer gebruikers een verkooporder of een product dupliceren, worden tekstvelden standaard gekopieerd. Voor notities die context vastleggen die specifiek is voor het oorspronkelijke record, zoals een klantgesprek of een specifiek leveringsprobleem, kan dit verwarring veroorzaken. Stel copy=False in voor die velden zodat gedupliceerde records beginnen met een schone notitiesectie.


5. Gebruik compute met store=True voor automatisch gegenereerde samenvattingen

Tekstvelden kunnen dynamisch worden berekend in Odoo. Een nuttig patroon is om een automatisch gegenereerd samenvattingsveld te bouwen dat waarden uit andere velden op het record samenvoegt. Met store=True en de juiste @api.depends() triggers, wordt de berekende tekst in de database opgeslagen en wordt deze doorzoekbaar in lijstweergaven en filters. Dit is een praktische techniek voor Odoo-berekende velden om lichte interne samenvattingen te creëren zonder een apart rapport te bouwen.

Veelvoorkomende Valkuilen


Kiezen voor Text wanneer Html nodig is

Als een veld bedoeld is om inhoud weer te geven op de website of in een opgemaakte PDF-rapport, zal het gebruik van Text in plaats van Html alle opmaak verwijderen. Gebruikers die inhoud met opsommingstekens of vetgedrukte tekst in een Text-veld plakken, zullen het zien weergegeven als platte, onopgemaakte proza. Vraag altijd of het uitvoerkanaal opmaak nodig heeft voordat je het veldtype kiest.


Kiezen voor Text wanneer Char de juiste keuze is

Een Text-veld wordt weergegeven als een hoge, aanpasbare tekstarea. Als een veld alleen maar een korte waarde zoals een trackingnummer of een productvariantcode zal bevatten, maakt het gebruik van Text het formulier onnodig omvangrijk. Inhoud van één regel hoort in een Char-veld, dat wordt weergegeven als een compact tekstinvoerveld dat natuurlijk in een formulierlay-out past.


Vergeten te vertalen op meertalige labels en beschrijvingen

Op Odoo-instanties die in meerdere landen zijn ingezet, betekent het ontbreken van de translate=True eigenschap op een gebruikersvriendelijk Text-veld dat alle gebruikers dezelfde waarde zien, ongeacht hun taalinstelling. Dit is vooral problematisch voor productbeschrijvingen en categorienotities die zichtbaar zijn in de interface. De oplossing is eenvoudig, maar het toevoegen ervan nadat gegevens al in het systeem zijn vereist een zorgvuldige migratie om te voorkomen dat bestaande waarden worden overschreven.


Text gebruiken voor gestructureerde gegevens

Een Text-veld dat JSON, door pijpen gescheiden waarden of andere handmatig gemaakte gestructureerde formaten opslaat, is een onderhoudsprobleem dat wacht om te gebeuren. Als gegevens een consistente structuur hebben, moeten ze worden opgeslagen in de juiste Odoo-veldtypes: Selection voor vaste opties, Many2one voor relaties, of een gerelateerd model met de juiste velden. Structuur coderen binnen een vrij tekstveld maakt het onmogelijk om de gegevens betrouwbaar te filteren, te groeperen of er rapporten over te maken.


Het veld niet toevoegen aan de zoekweergave

Een tekstveld dat belangrijke informatie bevat maar niet is opgenomen in de zoekweergave van het model kan niet worden gefilterd vanuit de zoekbalk in de lijstweergave. Gebruikers eindigen met scrollen door records om te vinden wat ze nodig hebben in plaats van eenvoudig een trefwoord in te typen. Als een tekstveld informatie opslaat waar gebruikers naar willen zoeken, voeg het dan toe aan de definitie van de zoekweergave bij het aanmaken van het veld.

Conclusie


Het tekstveld is een van die bouwstenen in het Odoo-framework die onopvallend lijkt totdat je serieus begint met het ontwerpen van formulieren.


 Kiezen tussen Char, Text en Html is een van de eerste beslissingen die je tegenkomt in elk Odoo-aanpassingsproject, en het vanaf het begin goed doen voorkomt herwerk en problemen met de datakwaliteit later.

Of je nu een notitiesveld toevoegt via Odoo Studio, het definieert in een Python-module, of het programmatologisch aanmaakt via de API, de patronen in deze gids helpen je de juiste keuze te maken en het veld correct te configureren voor jouw gebruiksgeval.


Een goed ontworpen Odoo-datamodel is opgebouwd uit kleine, goed gekozen beslissingen. Het kiezen van het juiste veldtype voor elk stuk informatie is er een van, en het tekstveld, gebruikt in de juiste context, is een betrouwbaar en flexibel hulpmiddel voor het vastleggen van de soort inhoud die niet netjes in gestructureerde velden past.

Bij Dasolo helpen we bedrijven met de implementatie, aanpassing en optimalisatie van Odoo in alle afdelingen. Of je nu hulp nodig hebt bij het ontwerpen van een schoon datamodel, het bouwen van aangepaste velden en workflows, of het opzetten van een volledige Odoo-implementatie vanaf nul, ons team staat klaar om je te ondersteunen. Neem contact op en laten we praten over jouw Odoo-project.

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