Skip to Content

HTML-feltet i Odoo: Den komplette vejledning

Alt hvad du bør vide om Html-feltet i Odoo: fra grundlæggende brug til avanceret tilpasning
6. marts 2026 af
HTML-feltet i Odoo: Den komplette vejledning
Dasolo
| Ingen kommentarer endnu

Introduktion


Når du læser en produkttekst i en Odoo-webshop med overskrifter, punktopstillinger og billeder, er det ofte ét enkelt felt der står bag: Html-feltet. Det er et af de mest fleksible felttyper i Odoo og dukker op langt oftere i systemet, end de fleste brugere tænker over.


I modsætning til et almindeligt tekstfelt, der kun gemmer rå tekst, håndterer Html-feltet formateret indhold med fuld HTML. Derfor er det uundværligt, når brugere skal oprette struktureret eller stiliseret tekst — fx produktbeskrivelser, e-mail-skabeloner, interne noter eller indhold på websider.


Denne guide gennemgår, hvad Html-feltet rent praktisk er, hvordan det gemmes og renses i Odoo, hvor det typisk bruges i forretningsprocesser, og hvordan du kan oprette eller tilpasse det via Odoo Studio, Python-moduler eller API. Vi gennemgår også de hyppigste fejl, folk begår.

Hvad er Html-feltet i Odoo


I Odoo’s ORM er Html-feltet lavet til at gemme HTML-indhold. Det mappes til en TEXT-kolonne i PostgreSQL, og værdien er simpelthen en HTML-streng. Odoo står for visning og rengøring, så brugerne får en WYSIWYG-editor i stedet for rå HTML-kode.


Set fra brugersiden fremstår Html-feltet som en WYSIWYG-editor. Man kan lave fed, kursiv, overskrifter, lister, links, tabeller og indsætte billeder direkte i feltet — og når man gemmer, ligger alt som struktureret HTML bagved.


I en Python-model defineres feltet typisk som følger:

from odoo import fields, models

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

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

Parameteren string bestemmer label for feltet. sanitize styrer, om Odoo fjerner potentielt farlig HTML før lagring — en vigtig sikkerhedsindstilling som er slået til som standard.


I Odoo Studio kaldes feltet ofte Html eller Rich Text. Felter oprettet i Studio får automatisk præfikset x_studio_. Definerer du det i Python eller via API, vælger du selv det tekniske navn.

Sådan fungerer feltet


Når du definerer et Html-felt oprettes en TEXT-kolonne i PostgreSQL uden fast længdebegrænsning, hvilket gør feltet velegnet til længere tekster. Odoo håndterer sanitizeringen før data skrives til databasen.


Sanitization og sikkerhed

Det mest karakteristiske ved Html-feltet er sanitizeringen. Som standard fjerner Odoo HTML-tags og attributter, der kan misbruges til XSS-angreb. Adfærden styres af flere attributter på feltet:

  • sanitize: Når True (standard) kører Odoo rengøringsrutinen før gem. Sæt False kun hvis indholdet kommer fra en helt betroet kilde, og du skal bevare rå HTML.
  • sanitize_tags: Når True fjerner Odoo tags, der ikke er på den tilladte liste. Slås det fra åbnes der for vilkårlige tags — kun med stor forsigtighed.
  • sanitize_attributes: Bestemmer om attributter på tags også renses.
  • sanitize_style: Styrer hvad der sker med inline style-attributter; visse CSS-egenskaber kan være tilladt mens farlige fjernes.
  • strip_style: Når True fjernes alle inline style-attributter fuldstændigt.
  • strip_classes: Når True fjernes alle CSS-klasseattributter fra indholdet.

Denne rengøring gør Html-feltet sikkert til bruger-genereret indhold, og er grunden til at feltet trygt kan bruges på kundevendte formularer og e-mails i Odoo.


Væsentlige feltattributter

Udover sanitization deler Html-feltet mange standardatributter med andre Odoo-felter:


  • translate: Sæt til True hvis feltet skal kunne oversættes pr. sprog. Odoo gemmer separate HTML-versioner for hver aktivt sprog.
  • required: Gør feltet obligatorisk. Vær opmærksom på, at et Html-felt med kun tomme tags eller whitespace kan se ’fyldt’ ud for interfacet, så validering fungerer bedst mod helt tomme værdier.
  • default: Angiver en standard HTML-værdi ved oprettelse af nye poster — nyttigt til forudfyldte e-mail-skabeloner eller standardbeskrivelser.
  • compute: Knytter en Python-metode, der bygger HTML indhold dynamisk. Med store=True gemmes resultatet i databasen.
  • copy: Styrer om HTML-indhold kopieres ved duplikering af en post. Standard er True.

Visning i brugerfladen

I formularer viser Html-feltet Odoos rich text-editor med en formateringsværktøjslinje. I lister viser Odoo typisk et tekstuddrag uden tags for at holde overblik og ydeevne.


I XML-views kan du styre widgeten. Standardwidget’en er rich text-editoren, men du kan også vise feltet som read-only HTML med html-widget’en — praktisk til rapporter eller portal-sider, hvor brugere kun skal læse formateret indhold.


Samspil med Odoo ORM

Fra et udviklerperspektiv læser du en Html-værdi som en HTML-streng og skriver også HTML-strenge tilbage. Sanitizeringen sker i ORM-laget før skrivningen til databasen, så også API-kald gennem XML-RPC får samme behandling, når sanitize=True.


En praktisk konsekvens: har du brug for at gemme brugerdefinerede tags eller attributter, som Odoo normalt fjerner, kræver det sanitize=False eller ændrede sanitize-flags — en avanceret løsning med sikkerhedsmæssige konsekvenser.

Når virksomheder bruger det


Html-feltet findes på tværs af mange forretningsområder. Her er fem konkrete eksempler fra virkelige arbejdsgange.


Lager og e-handel: produktbeskrivelser

Det mest udbredte Html-felt i Odoo er description_sale på product.template — det er den tekst, kunderne ser i webshoppen og i salgslinjer. Feltet giver merchandising-teamet mulighed for at skrive strukturerede beskrivelser med punktopstillinger, overskrifter og billeder, hvilket typisk øger konverteringen. Samme produktpost bruges både i backoffice og på butiksiden, så indholdet er samlet ét sted.


E-mail-marketing: skabelonindhold

Odoos e-mail-skabeloner bruger Html-felter til selve brødteksten (body_html). Her placeres layout, billeder og pladsholdere, der erstattes ved afsendelse. Markedsføringsafdelingen kan lave rige e-mails direkte i Odoo uden eksterede designværktøjer — indholdet er genbrugeligt på tværs af kampagner, tilbud og automatiserede flows.


CRM: noter og tilbudsbeskrivelser

Sælgerne har ofte brug for at gemme detaljeret kontekst om en lead eller mulighed. Html-felter i CRM gør det muligt at skrive formaterede noter med lister og links til eksterne dokumenter — langt mere anvendeligt end ren tekst når information skal deles eller indgå i rapporter.


Regnskab: faktura-tekster og leveringsbetingelser

Virksomheder bruger Html-felter til betalingsbetingelser, juridiske klausuler eller garantitekster på fakturaer og salgsordrer. Note-feltet på salgsordrer og fakturaer er et Html-felt, så økonomiafdelingen kan bevare korrekt linjeføring og typografi på PDF-udskrifter.


HR: stillingsopslag

Når HR poster jobannoncer i Odoo Recruitment, gemmes jobbeskrivelsen i et Html-felt på hr.job og hr.applicant. Det giver mulighed for klare sektioner om ansvarsområder, krav og personalegoder — præcis det formaterede indhold, der ser professionelt ud på en karriereside.

Sådan opretter eller tilpasser du Html-feltet


Der er tre typiske måder at tilføje et Html-felt til en model på, afhængigt af dit setup og deployment-strategi.


Brug Odoo Studio (ingen kode)

Odoo Studio gør det nemt at tilføje et Html-felt til en form — ingen programmering nødvendig:

  1. Åbn Odoo Studio fra hovedmenuen.
  2. Gå til den formular, hvor feltet skal ligge.
  3. Træk et Html eller Rich Text-felt ind fra sidepanelet over på formen.
  4. Sæt label og indstillinger i feltets egenskabsvindue.
  5. Gem og luk Studio.

Studio opretter feltet med x_studio_-præfiks, tilføjer det til viewet og håndterer databasen. Feltet er straks tilgængeligt i hele instansen uden migrationstrin.


Brug Python i et custom modul

For udviklere der bygger Odoo-moduler, defineres Html-felter i Python-modellen. Denne metode er anbefalet, hvis ændringen skal versionskontrolleres og deployes til staging og produktion:


from odoo import fields, models

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

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

Efter definitionen skal feltet medtages i viewets XML, så det vises i interfacet. Odoo opretter TEXT-kolonnen automatisk ved installation eller opgradering af modulet, og feltet vil fremstå som rich text-editor i formularen.


Brug af XML-RPC API

Hvis du automatiserer tilpasninger via scripts eller en deployments-pipeline, kan du oprette Html-felter gennem XML-RPC API:

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

ttype: 'html' fortæller Odoo at der skal oprettes et Html-felt. state: 'manual' markerer feltet som brugeroprettet frem for moduldefineret — en metode der anvendes til fjernoprettelse i konfigurationsscripts.


Bemærk, at sanitization-indstillinger ikke kan sættes på samme måde via ir.model.fields gennem API’et som i Python; standard sanitization gælder ved API-oprettelse.

Gode råd og anbefalinger


1. Behold sanitize aktiveret medmindre du har en god grund til at slå det fra

Sanitizeringen beskytter din Odoo-instans mod XSS-sårbarheder. I langt de fleste tilfælde fungerer alt korrekt med sanitization slået til. Deaktivér kun hvis indholdet kommer fra en fuldt betroet intern proces, og aldrig hvis brugerne selv kan indsende indhold.


2. Brug translate=True for flersprogede produkttekster

Hvis din Odoo-installation kører flere sprog, bør kundevendte Html-felter have translate=True. Det gør det muligt at vedligeholde separate HTML-versioner per sprog, så kunder ser beskrivelser på deres eget sprog i stedet for fallback-tekst.


3. Undgå afhængighed af eksterne ressourcer i feltet

Indlejrning af eksterne billeder eller scripts skaber sårbarheder: eksterne links kan dø eller ændre sig. Brug hellere Odoo’s vedhæftningssystem til at hoste billeder internt og referer med relative eller interne URLs, så indhold forbliver robust ved migrationer og serverændringer.


4. Brug beregnede Html-felter til dynamisk indhold

Til programmatisk-genereret indhold — fx et formateret resumé af ordrelinjer eller en dynamisk garanti-tekst — er et computed Html-felt med store=True praktisk. Logikken ligger ét sted, resultatet gemmes for hurtig adgang, og feltet vises korrekt i UI og PDF-rapporter.


5. Vælg Html eller Text med tanke på kontekst

Hvis teksten kun læses i backend i ren tekst-kontekst, kan et Text-felt være tilstrækkeligt. Brug Html når formatering betyder noget — på websider, i print eller i e-mails. Indfør ikke Html hvor et simpelt Text-felt gør arbejdet, da det blot complicerer brugernes oplevelse.

Almindelige faldgruber


Slå sanitization fra og glem at gennemgå det

At sætte sanitize=False på et felt som brugere selv kan redigere er en sikkerhedsrisiko. Det sker ofte midlertidigt i udvikling for at opfylde et formateringskrav, og så bliver det glemt før produktion. Dokumentér altid årsagen og planlæg en sikkerhedsreview.


Indsatte tekster fra Word eller websider med dårlig HTML

Når brugere indsætter fra Word, Google Docs eller andre sider, følger ofte rodet HTML med — usynlige tegn, forældede tags eller overflødig markup. Det giver inkonsistent visning, problemer med søgning eller tunge felter. Opfordr brugerne til først at 'indsætte som almindelig tekst' og så gensætte formatering i Odoos editor.


Forveksling med website-builderens indhold

Odoos website-builder bruger blokke og komponenter, og HTML’en der gemmes dér er ikke det samme som standard Html-feltets indhold. At kopiere avanceret website-builder HTML ind i et model-felt vil ofte blive renset væk eller ikke gengivet korrekt.


Glemme translate i flersprogede installationer

Et Html-felt uden translate=True viser samme tekst i alle sprog. Det er acceptabelt internt, men problematisk for kundevendte tekster. Manglende oversættelsesflag er let at overse og svært at rette, når indhold allerede er lagt ind i kun ét sprog.


Brug af Html-felter hvor der forventes ren tekst

Some parts of Odoo, such as email subjects, report titles, or external API responses, expect plain text strings. If you store an Html field value in a context where the HTML tags are not stripped, your users will see raw markup like <p>Hello</p> instead of clean text. Always check how and where the field value will be consumed before choosing Html over Char or Text.

Afrunding


Html-feltet er en af de mest kraftfulde felttyper i Odoo. Det arbejder i det stille bag produktbeskrivelser, e-mails, jobopslag og fakturatekster og gør formateret indhold muligt uden ekstra værktøj.


At forstå hvordan det fungerer — især sanitizeringen, oversættelsesstøtten og hvordan det opfører sig i forskellige visningskontekster — hjælper dig med at træffe bedre valg, når du designer eller tilpasser en Odoo-installation. Uanset om du bruger Studio, skriver et modul i Python eller opretter felter via API, gælder principperne fra denne guide.


Som med de fleste Odoo-funktioner er Html-feltet simpelt at bruge, når du ved hvad der sker under overfladen. Den reelle værdi kommer af at placere det rigtigt, sætte de rigtige indstillinger og bruge det til det rette indhold.

Hos Dasolo hjælper vi virksomheder med at implementere, tilpasse og optimere Odoo på tværs af afdelinger. Uanset om I har brug for hjælp til datamodellen, særlige felter i arbejdsgange eller fuldmoduler skræddersyet til jeres forretning, står vores team klar. Kontakt os og lad os tage en snak om dit Odoo-projekt.

HTML-feltet i Odoo: Den komplette vejledning
Dasolo 6. marts 2026
Del dette indlæg
Log ind for at skrive en kommentar