Innledning
Tekst-feltet er kanskje det mest brukte friform-feltet i Odoo: når noen legger inn notater, skriver produktbeskrivelser eller legger inn interne kommentarer på en ordre, ender de ofte opp i et Tekst-felt.
Utad ser det ut som en enkel tekstboks, men kunnskap om egenskaper, lagring og hvordan feltet knyttes til Odoo sitt data- og ORM-lag påvirker hvordan du bygger skjemaer, moduler eller Studio-felt på en profesjonell måte.
Denne veiledningen forklarer hva Tekst-feltet lagrer og hvordan det oppfører seg, viser praktiske forretningsbruk, beskriver teknisk tilpasning, gir anbefalte fremgangsmåter og peker på vanlige feil utviklere og konsulenter gjør.
Hva er Tekst-feltet i Odoo
I Odoos ORM er fields.Text felt-typen som lagrer flere linjer med ren tekst. I databasen blir dette en TEXT-kolonne i PostgreSQL uten forhåndsdefinert maks-lengde. Brukerne kan skrive alt fra en kort setning til flere avsnitt uten at feltet begrenser dem.
I skjemaer vises feltet som et resizable <textarea>. I listevisninger vises teksten avkortet, og i søk støtter det tekstbaserte filtrering på samme måte som Char-felt.
Nedenfor ser du en enkel implementasjonsidé for hvordan et Tekst-felt defineres i en Python-modul:
from odoo import fields, models
class SaleOrder(models.Model):
_inherit = 'sale.order'
internal_notes = fields.Text(
string='Internal Notes',
translate=False,
)
I Odoo Studio heter feltet Multi-Line Text. Felt opprettet i Studio får automatisk et x_studio_-prefiks. Lager du feltet i kode eller via API, bestemmer du selv det tekniske navnet.
Forskjellen mellom Char, Text og Html
Odoo har tre hovedtyper tekstfelt — forståelsen av hva som skiller dem er avgjørende for riktig bruk:
- Char-felt: Enkeltlinje input, best for korte verdier som navn, koder eller referanser. Kan ha en størrelsesbegrensning.
- Text-felt: Flerlinje tekstboks, egnet for notater, beskrivelser og fritekst. Lagrer ren tekst uten formatering.
- Html-felt: Rich text (WYSIWYG) for innhold som trenger formatering — e-postmaler, web-tekster og produktbeskrivelser. Lagrer HTML-markup.
Tekst-feltet balanserer mellom Char og Html: det gir plass til lengre innhold uten kompleksiteten eller sikkerhetsbetraktningene som følger med HTML-markup. For interne notater og enkle beskrivelser er det ofte riktig valg.
Slik fungerer feltet
Når du legger til et Tekst-felt i en modell, oppretter Odoo automatisk en tilsvarende TEXT-kolonne i PostgreSQL ved installasjon eller oppgradering av modulen. Ingen manuelle SQL-migrasjoner kreves.
I motsetning til Char har ikke Text-feltet en size-parameter. Kolonnen i databasen har ingen tegnbegrensning — dette er bevisst for å støtte åpent, variabelt innhold.
Viktige feltattributter
De viktigste egenskapene du må kjenne til for et Tekst-felt i Odoo:
- translate: Sett til
Truegjør feltet oversettbart per språk. Viktig i flerspråklige oppsett for kundevendte beskrivelser eller dokumenter. - required: Gjør feltet obligatorisk i grensesnittet og i ORM. En post kan ikke lagres uten at dette er fylt ut.
- default: Angir standardverdi ved opprettelse. Kan være en statisk tekst eller en callable metode.
- compute: Binder feltet til en Python-funksjon som beregner verdien dynamisk. Nyttig for automatisk genererte sammendrag eller avledet innhold.
- store: I kombinasjon med
computeavgjør dette om den beregnede verdien skrives til databasen. Medstore=Trueblir den søkbar og tilgjengelig i rapporter. - copy: Bestemmer om feltet kopieres ved duplisering av poster. Standard er
True; sett tilFalsefor kontekstspesifikke notater. - index: Sjeldent brukt for Text-felt, siden tekstsøk i stor grad håndteres via PostgreSQLs fulltekst-søk eller Odos egne filtre, ikke en enkel B-tree-index.
Hvordan feltet vises i grensesnittet
I formular vises Tekst-feltet som et vertikalt resizable <textarea>. I listevisninger vises teksten forkortet for å passe kolonnebredden. Legger du feltet til søkevisningen, er det klart for tekstsøk og filtrering.
I motsetning til Html-feltet har Tekst-feltet ingen WYSIWYG-editor: brukeren skriver ren tekst, og det som tastes inn lagres uendret med linjeskift bevart.
Samspill med Odoo ORM
For utviklere er lesing og skriving til Tekst-felt enkelt: verdien finnes direkte på post-objektet, og ORM tar seg av lagring. Det skjer ingen automatisk HTML-sanitization eller escaping, noe som skiller det fra Html-feltet hvor Odoo gjør sikkerhetssjekker for å unngå XSS.
Forretningssaker og konkrete eksempler
Tekst-felt brukes i mange forretningsprosesser hvor fri tekst er nødvendig. Her er eksempler fra fem konkrete arbeidsflyter.
Salg: Interne ordrekommentarer
På salgsordrer brukes ofte et Tekst-felt for interne instrukser — leveringsnotater, spesielle emballasjekrav eller kundepreferanser. Disse notatene følger ordren internt, men blir som regel ikke skrevet ut på kundedokumenter.
Lager: Interne produktnotater
Produktkortet har gjerne en Notes-fane hvor lagerpersonell legger igjen håndteringsinstrukser, bruddømfintlighet eller leverandørspesifikke detaljer. Fordi dette er rent intern informasjon, er et Tekst-felt ideelt.
Innkjøp: Leverandøravtaler og leveringsinstrukser
På innkjøpsordrer er Tekst-felt nyttig for å registrere muntlige avtaler, leveringstidspunkter eller spesielle betingelser som ble bekreftet utenfor systemet — slik at informasjonen følger ordren når varene kommer.
CRM: Møte- og mulighetsnotater
I CRM brukes Tekst-felt til fritekst fra kundemøter, innvendinger eller annen kontekst som ikke passer i strukturerte felter. Et dedikert Tekst-felt gir et raskt og konsist format som andre selgere kan lese ved overlevering.
HR: Intervju- og medarbeiderkommentarer
HR lagrer ofte intervjunotater, onboarding-kommentarer eller observasjoner direkte på medarbeider- eller kandidatposten. Et Tekst-felt er enkelt, søkbart og lett å inkludere i rapporter uten å opprette en egen modell.
Hvordan opprette eller tilpasse et Tekst-felt
Tre måter å legge til et Tekst-felt på, avhengig av behov og teknisk nivå.
Bruke Odoo Studio (ingen kode)
Odoo Studio er enklest for forretningsbrukere eller konsulenter uten kodebehov. Slik legger du til et Tekst-felt uten utvikling:
- Åpne Odoo Studio fra hovedmenyen (krever Studio-appen).
- Gå til skjemaet der du vil ha feltet.
- Dra en Multi-Line Text fra Studio-panelet inn i skjemaet.
- Angi etikett, obligatorisk-status og eventuelt standardverdi i egenskapspanelet for feltet.
- Lagre og lukk Studio.
Studio håndterer opprettelsen og oppdatering av visningen automatisk. Feltet får et x_studio_-prefiks og er umiddelbart tilgjengelig uten database-migrasjon eller serverstart.
Bruke Python i en egen modul
For produksjonsendringer som skal versjonshåndteres og distribueres, definerer du feltet i Python i en modul. Dette er standard praksis:
from odoo import fields, models
class ResPartner(models.Model):
_inherit = 'res.partner'
x_client_notes = fields.Text(
string='Client Notes',
translate=False,
copy=False,
)
Etter å ha definert feltet i modellen må du plassere det i riktig view-XML slik at det vises i grensesnittet. Odoo oppretter databasekolonnen automatisk ved installasjon eller oppgradering, og dette er anbefalt fremgangsmåte for vedvarende tilpasninger.
Bruke XML-RPC API
Vil du automatisere eller opprette felt programmatisk, kan du bruke XML-RPC API for å lage Tekst-felt fra et eksternt skript eller et deploy-verktøy:
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,
}]
)
Verdien ttype: text instruerer Odoo om å opprette et Tekst-felt. state: manual indikerer at feltet ble opprettet utenfor en modul (f.eks. via Studio eller API). Dette er en vanlig metode ved fjernkonfigurasjon.
Gode retningslinjer
1. Bruk Text når innholdet faktisk trenger flere linjer
En hyppig feil er å bruke Tekst-felt for enkeltverdier som heller hører hjemme i Char. Navn, koder eller korte referanser bør være Char. Tekst-felt er for setninger og avsnitt — feil valg kan gi dårlig brukeropplevelse og misvisende datamodell.
2. Bruk Html når formatering er nødvendig
Når brukerne trenger punktlister, fet skrift, lenker eller annen visuell formatering, må du velge Html-felt. Tekst-felt støtter kun ren tekst, og å be brukerne om å formatere uten verktøy fører til frustrasjon.
3. Aktiver translate for kundevendt, flerspråklig innhold
I flerspråklige oppsett bør alle Tekst-felt som vises til kunder eller på websider ha translate=True. Det lar oversettere vedlikeholde språkspesifikke versjoner uten å overskrive hverandre. Intern kommunikasjon trenger som regel ikke oversettelse.
4. Sett copy=False for notater som ikke skal dupliseres
Tekst-felt kopieres som standard ved duplisering. For samtalenotater eller postspesifikke kommentarer bør du bruke copy=False slik at nye kopier starter uten gammel kontekst.
5. Bruk compute med store=True for automatisk genererte sammendrag
Du kan la Tekst-felt bli beregnet i Odoo. Et typisk mønster er et automatisk sammendrag som slår sammen andre felter. Med store=True og riktige @api.depends()-deklarasjoner lagres teksten i databasen og blir søkbar og tilgjengelig i rapporter.
Vanlige fallgruver
Når Text ble valgt, men Html var riktig
Hvis innholdet skal vises på web eller i PDF med formatering, vil et Tekst-felt fjerne all layout og formatering. Brukere som limer inn formaterte tekster får flatt, uformatert resultat — spør alltid om utdata trenger formatering før du velger felt-type.
Når Text ble valgt, men Char var riktig
Et Tekst-felt vises som en stor, resizable boks. For korte verdier som sporingsnummer eller variantkode gjør dette skjemaene klumpete. Kort tekst hører hjemme i Char for et ryddigere grensesnitt.
Glemme translate på flerspråklige felt
Å mangle translate=True på et kundevendt Tekst-felt i et multinasjonalt miljø fører til at alle brukere ser samme tekst uansett språkvalg. Dette rammer særlig produktbeskrivelser. Å rette det i etterkant krever migrasjon og forsiktighet for ikke å overskrive eksisterende innhold.
Bruke Text for strukturert data
Å presse strukturert innhold (JSON, rør-separerte verdier osv.) inn i et Tekst-felt skaper vedlikeholdsproblemer. Strukturert data bør lagres i riktige felt: Selection, Many2one eller en egen modell. Friform-tekst gjør filtrering, gruppering og rapportering vanskelig eller umulig.
Ikke legge feltet til i søkevisningen
Hvis et viktig Tekst-felt ikke er med i modellens søkvisning, kan ikke brukere filtrere på innholdet fra listevisningen. Det blir tidkrevende å finne poster — legg feltet til i søkvisningen hvis brukerne trenger å søke i det.
Oppsummering
Tekst-feltet er en enkel komponent, men den gjør stor forskjell når du bygger gjennomtenkte skjemaer.
Å velge riktig mellom Char, Text og Html er en tidlig beslutning i ethvert Odoo-prosjekt. Riktig valg sparer tid, reduserer datarot og hindrer unødvendige endringer senere.
Enten du legger til et notatfelt i Studio, definerer det i en Python-modul eller oppretter det via API, vil prinsippene i denne guiden hjelpe deg å treffe riktig og konfigurere feltet riktig for ditt bruk.
Et solid datamodellarbeid handler om mange små riktige valg. Å velge riktig felt-type for hver informasjonsbit er ett av dem — brukt riktig er Tekst-feltet et fleksibelt og pålitelig verktøy for å fange innhold som ikke passer i strukturerte felter.
Hos Dasolo bistår vi bedrifter med implementasjon, tilpasning og optimalisering av Odoo på tvers av avdelinger. Trenger du hjelp med datamodell, skreddersydde felt eller en full Odoo-implementasjon, står vårt team klart til å støtte. Ta kontakt så tar vi en prat om ditt Odoo-prosjekt.