Skip to Content

HTML-felt i Odoo: Den Ultimative Guiden

Alt du trenger å vite om Html-feltet i Odoo-datamodellen, fra grunnleggende bruk til teknisk tilpasning
6. mars 2026 etter
HTML-felt i Odoo: Den Ultimative Guiden
Dasolo
| No comments yet

Introduksjon


Når du ser på en produktbeskrivelse i en Odoo e-handelsbutikk, er den formaterte teksten med fete overskrifter, punktlister og bilder drevet av en enkelt felttype: Html-feltet. Det er et av de mest allsidige feltene i Odoo-datamodellen, og det vises på flere steder enn de fleste brukere er klar over.


I motsetning til et vanlig tekstfelt som lagrer enkle strenger, lagrer Html-feltet rikt innhold med full formatering. Dette gjør det essensielt der brukere trenger å skrive strukturert eller stilisert tekst, enten det er en produktbeskrivelse, en e-postmal, en intern notat eller en seksjon på en nettside.


Denne guiden dekker hva Html-feltet er, hvordan det fungerer i Odoo ORM og databasen, hvor det brukes i virkelige forretningsarbeidsflyter, og hvordan du kan opprette eller tilpasse det ved hjelp av Odoo Studio eller Python-kode. Vi dekker også de vanligste feilene folk gjør når de arbeider med denne felttypen.

Hva er Html-feltet i Odoo


I Odoo ORM er Html-feltet designet for å lagre formatert HTML-innhold. Det kartlegges til en TEXT-kolonne i PostgreSQL, og den lagrede verdien er en HTML-streng. Odoo håndterer rendering og sanitization automatisk, så det brukerne ser i grensesnittet er en fullt formatert rik tekstredigerer, ikke rå HTML-kode.


Fra brukerens perspektiv vises et Html-felt som en WYSIWYG-editor (What You See Is What You Get). Brukere kan bruke fet, kursiv, overskrifter, lister, lenker, tabeller, og til og med sette inn bilder direkte i feltet. Resultatet lagres som strukturert HTML i bakgrunnen.


Slik ser feltet ut i en Python-modelldefinisjon:

from odoo import fields, models

class ProductTemplate(models.Model):
    _inherit = 'product.template'

    x_technical_specs = fields.Html(
        string='Tekniske spesifikasjoner',
        sanitize=True,
        sanitize_tags=True,
    )

Parameteren string setter den synlige etiketten. Parameteren sanitize kontrollerer om Odoo fjerner potensielt farlig HTML før verdien lagres. Dette er viktig av sikkerhetsgrunner og er aktivert som standard.


I Odoo Studio kalles denne felttypen Html eller Rich Text. Når den opprettes gjennom Studio, får den et x_studio_ prefiks. Når den defineres i Python eller via XML-RPC API, velger du det tekniske navnet selv.

Hvordan feltet fungerer


Når du definerer et Html-felt i Odoo, oppretter rammeverket en TEXT kolonne i PostgreSQL-databasen. Det er ingen lengdebegrensning på databasenivå, noe som gjør det egnet for langt innhold. Odoo-rammeverket håndterer sanitiseringslaget før verdien skrives til databasen.


Sanitisering og Sikkerhet

Den mest karakteristiske oppførselen til Html-feltet sammenlignet med andre felttyper er sanitiseringslaget. Som standard fjerner Odoo eventuelle HTML-tagger eller attributter som kan brukes til cross-site scripting (XSS) angrep. Dette kontrolleres av et sett med feltegenskaper:

  • sanitize: Når True (standard), bruker Odoo den fullstendige sanitiseringsprosessen før verdien lagres. Sett til False bare når du er sikker på at innholdet kommer fra en pålitelig kilde og må bevare rå HTML.
  • sanitize_tags: Når True, fjerner Odoo eventuelle HTML-tagger som ikke er på den tillatte listen. Å deaktivere dette tillater vilkårlige tagger, men bør gjøres med forsiktighet.
  • sanitize_attributes: Kontrollerer om attributter på HTML-tagger også blir sanitert.
  • sanitize_style: Kontrollerer om inline stilattributter blir sanitert. Som standard er visse CSS-egenskaper tillatt mens potensielt farlige blir fjernet.
  • strip_style: Når True, fjerner alle inline stilattributter helt.
  • strip_classes: Når True, fjerner alle CSS klasseattributter fra det lagrede innholdet.

Denne sanitærprosessen gjør Html-feltet trygt å bruke for brukergenerert innhold, noe som er grunnen til at det vises på kundevendte skjemaer og e-postmaler i Odoo.


Nøkkel feltattributter

Utover sanitærprosessen deler Html-feltet mange av de standard Odoo feltattributtene:


  • translate: Når satt til True, kan innholdet i feltet oversettes per språk. Odoo lagrer en egen versjon av HTML for hvert aktivt språk i databasen.
  • required: Gjør feltet obligatorisk. Merk at et Html-felt som bare inneholder hvitt rom eller tomme tagger fortsatt vil vises som ikke-tomt i grensesnittet, så obligatorisk validering fungerer best på virkelig blanke verdier.
  • default: Setter en standard HTML-verdi for nye poster. Nyttig for å forhåndsutfylle e-postmaler eller produktbeskrivelser med standard tekst.
  • compute: Knytter en Python-metode som dynamisk bygger HTML-innholdet. Med store=True blir resultatet lagret i databasen.
  • copy: Kontrollerer om HTML-innholdet dupliseres når en post kopieres. Standardverdi er True.

Hvordan det vises i visninger

I skjema-visninger gjengis et Html-felt som Odoo rik tekstredigerer. Brukere får en verktøylinje med formateringsalternativer, og innholdsområdet håndterer stilisert tekst, bilder og lenker. I listevisninger viser Odoo vanligvis en enkel tekstforhåndsvisning med HTML-tagger fjernet, for å holde listen lesbar.


Widget-attributtet i XML-visninger lar deg kontrollere gjengivelsen. Standardwidgeten for Html-felt er den rike tekstredigereren. Du kan også gjengi et Html-felt som skrivebeskyttet HTML-utdata ved å bruke html-widgeten, som er nyttig i rapportvisninger eller på portalsider der du ønsker å vise formatert innhold uten et redigerbart verktøylinje.


Interaksjon med Odoo ORM

Fra et utviklingsperspektiv returnerer lesing av et Html-felt en streng som inneholder den rå HTML-koden. Skriving til det forventer også en HTML-streng. Rensing skjer på ORM-nivå før skrivingen når databasen, så selv verdier skrevet via XML-RPC API går gjennom den samme renseprosessen når sanitize=True.


En praktisk implikasjon: hvis du trenger å lagre og hente innhold som inkluderer tilpassede HTML-tagger eller attributter som ikke er på Odoos tillatte liste, må du sette sanitize=False eller justere renseflaggene på feltdefinisjonen. Dette er et avansert bruksområde som krever nøye vurdering av sikkerhetsimplikasjonene i din distribusjon.

Forretningsbrukstilfeller


Html-feltet vises i mange områder av en Odoo-implementering. Her er fem virkelige eksempler fra vanlige forretningsarbeidsflyter.


Lager og E-handel: Produktbeskrivelser

Det mest brukte Html-feltet i Odoo er description_sale-feltet på product.template. Dette er produktbeskrivelsen som kundene ser på nettbutikken og i salgsordrelinjene. Å bruke et Html-felt her lar merchandising-team skrive strukturert produktinnhold med punktlister, overskrifter og innebygde bilder, som alle direkte oversettes til bedre e-handelskonverteringer. Den samme produktoppføringen driver både back-office og butikkfronten, så det er ingen duplisering av innhold mellom systemene.


E-postmarkedsføring: Maler

Odoos e-postmaler er sterkt avhengige av Html-felt. body_html-feltet på mail.template lagrer hele e-postinnholdet som HTML, inkludert layout, bilder og dynamiske plassholdere som blir erstattet med ekte verdier ved sending. Markedsføringsteam kan designe rikt e-postinnhold direkte i Odoo uten å måtte bruke et eksternt e-postdesignverktøy. Innholdet er versjonert og gjenbrukbart på tvers av kampanjer, tilbud og automatiserte arbeidsflyter.


CRM: Notater og mulighetsbeskrivelser

Salgs-team trenger ofte å fange detaljert kontekst om en potensiell kunde eller avtale. Html-felt på CRM-leads og muligheter lar representanter skrive strukturerte notater med formatering, lister og innebygde lenker til eksterne dokumenter eller forslag. Dette er mer nyttig enn vanlige tekstfelt når notater må deles på tvers av et team eller inkluderes i trykte rapporter, siden formateringen overlever i alle disse kontekstene.


Regnskap: Fakturabetingelser og vilkår

Mange selskaper inkluderer betalingsbetingelser, juridiske klausuler eller garantiinformasjon nederst på fakturaer og salgsordrer. Feltet note på salgsordrer og fakturaer er et Html-felt, som gjør det mulig for finans- og driftsteam å formatere disse betingelsene med riktig struktur. Innholdet vises pent på trykte PDF-dokumenter, med linjeskift og vektlegging bevart nøyaktig som angitt.


HR: Stillingsbeskrivelser

Når HR-team legger ut stillingsannonser gjennom Odoo Rekruttering, lagres stillingsbeskrivelsen i et Html-felt på modellene hr.job og hr.applicant. Dette muliggjør strukturerte stillingsannonser med klare seksjoner for ansvar, krav og fordeler, akkurat den typen formaterte innhold som ser profesjonelt ut på en karriereside og hjelper til med å tiltrekke de rette kandidatene.

Opprette eller tilpasse Html-feltet


Det er tre hovedmåter å legge til et Html-felt i en Odoo-modell, avhengig av din tekniske oppsett og distribusjonsmetode.


Bruke Odoo Studio (Ingen kode)

Odoo Studio gjør det enkelt å legge til et Html-felt til ethvert eksisterende skjema uten å skrive kode:

  1. Åpne Odoo Studio fra hovedmenyen.
  2. Naviger til skjemaet der du vil ha feltet.
  3. Dra et Html eller Rich Text felt fra sidepanelet og inn i skjemaet.
  4. Sett etiketten og eventuelle andre alternativer i feltets egenskapspanel.
  5. Lagre og lukk Studio.

Studio oppretter automatisk feltet med et x_studio_ prefiks, legger det til i visningen, og håndterer databasens kolonne. Ingen migrerings- eller distribusjonstrinn er nødvendig fra din side. Feltet er umiddelbart tilgjengelig for datainntasting på tvers av instansen.


Bruke Python i et tilpasset modul

For utviklere som bygger Odoo-moduler, defineres Html-felt i Python-modellfiler. Denne tilnærmingen anbefales for enhver tilpasning som må versjonskontrolleres og distribueres på tvers av staging- og produksjonsmiljøer:


from odoo import fields, models

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

    x_delivery_instructions = fields.Html(
        string='Leveringsinstruksjoner',
        sanitize=True,
        translate=True,
    )

Etter å ha definert feltet i modellen, legg det til den relevante visningen XML-filen slik at det vises i grensesnittet. Odoo håndterer opprettelsen av TEXT-kolonnen i databasen automatisk når du installerer eller oppgraderer modulen. Feltet vil bli gjengitt som en rik tekstredigerer i skjemaet uten ytterligere widgetkonfigurasjon.


Bruke XML-RPC API

Hvis du administrerer Odoo-tilpasninger programmatisk som en del av en distribusjonspipeline eller et eksternt konfigurasjonsskript, kan du opprette Html-felt via XML-RPC API:

field_id = models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'ir.model.fields', 'create',
    [{
        'name': 'x_custom_notes',
        'field_description': 'Tilpassede notater',
        'model_id': model_id,
        'ttype': 'html',
        'state': 'manual',
    }]
)

Verdien ttype: html forteller Odoo å opprette et Html-felt. Innstillingen state: manual markerer det som et brukeropprettet felt i stedet for et som er definert av en modul. Dette er den samme tilnærmingen Dasolo bruker for opprettelse av eksterne felt i klientmiljøer, som en del av automatiserte konfigurasjonsnotater som kan kjøres og spores uten direkte servertilgang.


Merk at sanitiseringsalternativer (sanitize, sanitize_tags, osv.) ikke kan settes via API på ir.model.fields på samme måte som de er i Python. Den standard sanitiseringsadferden gjelder når du oppretter felt gjennom API.

Beste praksis


1. Hold sanitiseringsalternativet aktivert med mindre du har en god grunn til å ikke gjøre det

Den standard sanitiseringsadferden eksisterer for å beskytte Odoo-instansen din mot sårbarheter for cross-site scripting. De fleste bruksområder fungerer perfekt med sanitisering aktivert. Deaktiver det bare når du lagrer innhold generert av en fullt pålitelig intern prosess, som en server-side rendering pipeline, og aldri når innholdet kommer fra brukerinput eller eksterne kilder.


2. Bruk translate=True for flerspråklig produktinnhold

Hvis Odoo-instansen din støtter flere språk, bør Html-felter som vises på nettstedet eller på kundevendte dokumenter ha translate=True. Dette gjør at teamet ditt kan opprettholde separat HTML-innhold for hvert språk, og sikrer at kundene alltid ser beskrivelser og vilkår på sitt eget språk i stedet for en fallback.


3. Unngå å lagre Html-feltinnhold som er avhengig av eksterne ressurser

Å sette inn eksterne bilder eller skript i et Html-felt skaper avhengigheter som kan bryte stille når disse eksterne URL-ene endres eller går offline. Bruk Odoo sitt vedleggssystem for å hoste bilder internt, og referer til dem med relative URL-er. Dette holder innholdet ditt bærbart og motstandsdyktig mot database-migreringer og serverendringer.


4. Bruk beregnede Html-felt for dynamisk dokumentinnhold

For innhold som må bygges programmatisk, som et formatert sammendrag av bestillingslinjer eller en dynamisk garantitekst, er et beregnet Html-felt med store=True en ren løsning. Beregningslogikken lever på ett sted, utdataene lagres i databasen for rask tilgang, og feltet gjengis riktig både i grensesnittet og i PDF-rapporter.


5. Vurder gjengivelseskonteksten når du velger Html vs Text

Hvis innholdet bare noen gang vil vises i Odoo-backend i en kontekst der brukerne leser det som ren tekst, kan et Text-felt være tilstrekkelig. Bruk Html når formateringen faktisk betyr noe for leseren, som på en nettside, et trykt dokument eller en e-post. Å legge til et Html-felt der et enkelt Text-felt ville vært tilstrekkelig, introduserer unødvendig kompleksitet for brukere som må samhandle med en rik tekstredigerer for enkel notatskriving.

Vanlige fallgruver


Deaktivere sanitær og glemme det

Å sette sanitize=False på et felt som brukerne kan redigere direkte, er en sikkerhetsrisiko. Det er lett å gjøre dette under utviklingen for å fjerne en formateringskrav, og så glemme å se på det før produksjon. Dokumenter alltid hvorfor sanitær er deaktivert og planlegg en gjennomgang før distribusjon.


Kopiere innhold fra eksterne kilder med ødelagt HTML

Når brukere limer inn innhold fra Word-dokumenter, Google Docs eller nettsteder i et Html-felt, inneholder resultatet ofte rotete eller ikke-standard HTML. Dette kan føre til inkonsekvent gjengivelse, usynlige tegn som bryter søk, eller oppblåste feltverdier som reduserer sideinnlastningene. Oppfordre brukerne til å bruke "Lim inn som ren tekst"-alternativet først og deretter gjenbruke formateringen inne i Odoo-redigereren.


Forvirre Html-felt med innholdet i nettstedbyggeren

Odoo's nettstedbygger bruker byggeklosser og Owl-komponenter for å konstruere sideinnhold. HTML-en som lagres av nettstedbyggeren i sidevisninger er ikke den samme som det du ville satt inn i et standard Html-felt. Å prøve å kopiere kompleks HTML fra nettstedbyggeren inn i et Html-felt på en modell vil vanligvis ikke gjengi korrekt og kan bli fjernet av sanitisatoren.


Å glemme å oversette ved flerspråklige distribusjoner

I en flerspråklig Odoo-instans viser et Html-felt uten translate=True det samme innholdet til brukere på alle språk. Dette er greit for interne felt, men blir et problem for produktbeskrivelser, e-postmaler og alt innhold som når eksterne kontakter. Å mangle denne innstillingen er lett å overse under den innledende oppsettet og vanskelig å fikse i ettertid når innholdet kun er lagt inn på ett språk.


Bruke Html-felt på steder hvor ren tekst forventes

Noen deler av Odoo, som e-postemner, rapporttitler eller eksterne API-responser, forventer rene tekststrenger. Hvis du lagrer en Html-feltverdi i en kontekst hvor HTML-tagene ikke blir fjernet, vil brukerne se rå markup som <p>Hello</p> i stedet for ren tekst. Sjekk alltid hvordan og hvor feltverdien vil bli konsumert før du velger Html fremfor Char eller Text.

Konklusjon


Html-feltet er en av de mest kraftfulle felttypene i Odoo-datamodellen. Det sitter stille bak produktbeskrivelser, e-postmaler, stillingsannonser og fakturanotater, og gjør formatert innhold mulig gjennom hele systemet uten noe ekstra verktøy.


Å forstå hvordan det fungerer, spesielt saniteringslaget, oversettelsesstøtten, og hvordan det oppfører seg på tvers av forskjellige gjengivelseskontekster, hjelper deg med å ta bedre beslutninger når du designer eller tilpasser en Odoo-instans. Enten du bruker Odoo Studio for å legge til et rikt tekstfelt i et skjema, definerer det i Python som en del av et tilpasset modul, eller oppretter det eksternt via API-en, gjelder prinsippene som dekkes i denne guiden for alle tre tilnærmingene.


Som de fleste ting i Odoo, er feltet i seg selv enkelt når du vet hva det gjør under panseret. Verdien kommer fra å bruke det på de riktige stedene, med de riktige innstillingene, for den riktige typen innhold.

Hos Dasolo hjelper vi selskaper med å implementere, tilpasse og optimalisere Odoo på tvers av alle avdelinger. Enten du trenger hjelp med å designe en ren datamodell, legge til tilpassede felt i arbeidsflytene dine, eller bygge komplette Odoo-moduler skreddersydd til din virksomhet, er vårt team her. Ta kontakt med oss og la oss snakke om ditt Odoo-prosjekt.

HTML-felt i Odoo: Den Ultimative Guiden
Dasolo 6. mars 2026
Share this post
Logg inn to leave a comment