Siirry sisältöön

Odoo HTML Field: Täydellinen Opas Kehittäjille

Kattava opas Odoo‑järjestelmän Html‑kentästä: mitä se tekee, miten sitä käytetään ja miten sitä räätälöidään teknisesti
6. maaliskuuta 2026 kirjoittanut
Odoo HTML Field: Täydellinen Opas Kehittäjille
Dasolo
| Ei vielä kommentteja

Johdanto


Kun selaat tuotteen esittelytekstiä Odoo-verkkokaupassa, monirivinen muotoiltu sisältö — lihavoidut otsikot, listat ja kuvat — on usein peräisin yhdestä kenttätyypistä: Html-kentästä. Se on yksi Odoon joustavimmista kentistä ja esiintyy järjestelmässä useammin kuin moni huomaa.


Tavallinen tekstikenttä tallettaa vain puhtaita merkkijonoja, mutta Html-kenttä pitää sisällään muotoiltua sisältöä HTML-muodossa. Siksi sitä käytetään aina, kun halutaan säilyttää otsikointi, listat, linkit tai kuvat — olipa kyse tuotetiedoista, sähköpostipohjista, sisäisistä muistiinpanoista tai nettisivujen osioista.


Tämä opas selittää, mitä Html-kenttä käytännössä on, miten Odoon ORM ja tietokanta käsittelevät sitä, missä yleisissä liiketoimintaprosesseissa sitä kannattaa käyttää, ja miten kentän luominen tai räätälöinti onnistuu Odoo Studion kautta tai Python-koodilla. Käsittelemme myös tavallisimmat virheet, joita kentän kanssa työskentelyssä tehdään.

Mikä on Html-kenttä Odoossa


Odoon ORM:ssä Html-kenttä on tarkoitettu tallentamaan muotoiltua HTML-sisältöä. Se mapataan PostgreSQL:ssä TEXT-sarakkeeksi, ja tietokantaan tallennetaan HTML-merkkijono. Odoo huolehtii käyttöliittymän renderöinnistä ja sisällön puhdistuksesta, joten käyttäjä näkee WYSIWYG-editorin sen sijaan, että näkisi raakaa HTML-koodia.


Käyttäjän näkökulmasta Html-kenttä näkyy rich text -editorina (WYSIWYG), jossa voi tehdä lihavointeja, kursivointeja, otsikkotasoja, listoja, linkkejä, taulukoita ja lisätä kuvia. Kaikki muotoilut tallentuvat taustalla rakenteellisena HTML:na.


Kenttä määritellään Odoo-mallissa Pythonissa seuraavalla tavalla:

from odoo import fields, models

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

    x_technical_specs = fields.Html(
        string='Technical Specifications',
        sanitize=True,
        sanitize_tags=True,
    )

string-parametrilla asetetaan kentän näkyvä nimi. sanitize määrittää, poistetaanko mahdollisesti vaaralliset HTML-elementit ennen tallennusta — tämä on oletuksena päällä ja tärkeä tietoturvasyistä.


Odoo Studion käyttöliittymässä kenttä näkyy nimillä Html tai Rich Text. Studiolla lisätyt kentät saavat x_studio_-etuliitteen, kun taas Pythonissa tai XML-RPC:n kautta määriteltäessä valitset itse teknisen nimen.

Miten kenttä toimii


Kun määrittelet Html-kentän, Odoo luo taustalle PostgreSQL:ään TEXT-sarakkeen. Tietokantarajoitusta pituudelle ei ole, joten kenttä sopii pitkiin kuvauksiin. Odoo-hoitaa puhdistuksen ennen arvon kirjoittamista tietokantaan.


Puhdistus ja tietoturva

Html-kentän tunnusomainen ominaisuus muihin kenttätapoihin verrattuna on sisällön puhdistus (sanitization). Oletuksena Odoo poistaa HTML-tageja ja attribuutteja, joiden avulla voisi tehdä XSS-hyökkäyksiä. Tämä käyttäytyminen säädetään kenttäkohtaisilla atribuuteilla:

  • sanitize: Kun arvona on True (oletus), Odoo suorittaa täyden puhdistusprosessin ennen tallennusta. Aseta False vain, jos varmuudella tiedät sisällön olevan täysin luotettavaa ja haluat säilyttää alkuperäisen HTML:n.
  • sanitize_tags: Kun True, Odoo poistaa sallitun listan ulkopuoliset HTML-tagit. Tämä kannattaa pitää päällä, ellei ole erittäin tarkkaa syytä sallia muita tageja.
  • sanitize_attributes: Määrittää, puhdistetaanko myös HTML-tagien attribuutit.
  • sanitize_style: Säätää, miten inline-tyylit käsitellään. Oletuksena tietyt CSS-ominaisuudet sallitaan, kun taas potentiaalisesti vaaralliset poistetaan.
  • strip_style: Kun True, kaikki inline-tyylit poistetaan kokonaan.
  • strip_classes: Kun True, kaikki CSS-luokat poistetaan tallennetusta sisällöstä.

Tämän puhdistuskerroksen ansiosta Html-kenttä on turvallinen vaihtoehto käyttäjien syöttämälle sisällölle, minkä vuoksi sitä käytetään myös asiakasrajapinnassa ja sähköpostipohjissa.


Tärkeitä kenttäattribuutteja

Sanitoinnin lisäksi Html-kenttä jakaa monia tavallisia Odoo-attribuutteja:


  • translate: Kun asetettu True, kentän sisältö voidaan kääntää kielikohtaisesti. Odoo tallentaa eri HTML-version jokaiselle aktiiviselle kielelle.
  • required: Tekee kentästä pakollisen. Huomaa, että kenttä, joka sisältää vain välilyöntejä tai tyhjiä tageja, saattaa silti näyttää ei-tyhjältä käyttöliittymässä, joten pakollisuuden validointi toimii parhaiten täysin tyhjillä arvoilla.
  • default: Asettaa oletus-HTML:n uusille riveille. Hyödyllinen esimerkiksi sähköpostipohjien tai tuotekuvausten esitäyttämiseen.
  • compute: Liittää Python-metodin, joka generoidaan HTML-sisällön dynaamisesti. store=True tallentaa tuloksen tietokantaan.
  • copy: Määrittää kopioidaanko HTML-sisältöä, kun tietue kopioidaan. Oletusarvo on True.

Miten kenttä näkyy näkymissä

Lomakenäkymissä Html-kenttä avautuu rich text -editorina, jossa on muotoilutyökalut ja sisältöalue, joka tukee kuvia ja linkkejä. Listanäkymissä Odoo yleensä näyttää plain-text-esikatselun, jossa HTML-tagit on poistettu, jotta lista pysyy luettavana.


XML-näkymissä voit määrittää widget-attribuutilla, miten kenttä renderöidään. Oletuswidget on rich text -editori. Voit myös näyttää kentän vain luettavana käyttämällä html-widgettiä, mikä sopii raportteihin tai portaalisivuille, joissa haluat esittää muotoillun sisällön ilman muokkaustyökaluja.


Vuorovaikutus Odoo ORM:in kanssa

Kehittäjän näkökulmasta Html-kentän lukeminen palauttaa merkkijonon, joka sisältää raakaa HTML-markuppia. Kirjoittaessa kenttään odotetaan HTML-merkkijonoa. Sanitointi tapahtuu ORM-tasolla ennen tietokantakirjoitusta, joten myös XML-RPC:n kautta lähetetyt arvot puhdistetaan, kun sanitize=True.


Käytännön seuraus: jos tarvitset tallentaa kustomoituja elementtejä tai attribuutteja, joita Odoon oletuslista ei salli, sinun pitää asettaa sanitize=False tai säätää sanitize-lippuja kentän määrittelyssä. Tämä on edistynyt tapaus, joka vaatii huolellista tietoturva-arviointia.

Liiketoiminnan käyttötapaukset


Html-kenttä esiintyy monissa Odoo-kokonaisuuksissa. Seuraavaksi on viisi yleistä esimerkkiä siitä, missä liiketoimintaprosesseissa sitä usein käytetään.


Varasto ja verkkokauppa: tuotetekstien esitykset

Yleisimpänä käyttökohteena on product.templatein description_sale, joka näyttää tuotteen kuvauksen verkkokaupassa ja tarjousrivillä. Html-kentän avulla merchandising-tiimi voi kirjoittaa selkeitä otsikoituja kuvauksia, luetteloita ja upottaa kuvia — mikä parantaa ostokokemusta ja konversiota. Sama tietue palvelee sekä back-officea että myymälää, joten sisältöä ei tarvitse ylläpitää kahdessa paikassa.


Sähköpostimarkkinointi: viestipohjat

Odoon sähköpostipohjat hyödyntävät Html-kenttiä voimakkaasti. mail.templatein body_html tallettaa koko sähköpostin rungon HTML:nä, sisältäen asettelun, kuvat ja dynaamiset paikkamerkit. Markkinointi voi luoda visuaalisesti rikkaan viestin suoraan Odoossa ilman ulkoisia työkaluja — sisältö on uudelleenkäytettävissä kampanjoissa ja automaatioissa.


CRM: muistiinpanot ja mahdollisuuskuvaukset

Myyntihenkilöt tarvitsevat usein dokumentoitua kontekstia prospekteista ja kaupoista. CRM-mallien Html-kentät antavat mahdollisuuden tehdä jäsenneltyjä muistiinpanoja — luettelot, linkitykset ja huomautukset säilyttävät muotoilunsa, mikä helpottaa tiedonjakamista tiimin sisällä ja tulostettavissa raporteissa.


Kirjanpito: laskun ehdot ja ehdotukset

Yritykset lisäävät usein maksuehdot, juridiset lausekkeet tai takuut laskujen ja myyntitilausten loppuun. Sale orderin ja invoice:n note-kenttä on Html-tyyppinen, jolloin talous voi muotoilla ehdot siististi. PDF-tulosteissa rivinvaihdot ja korostukset pysyvät sellaisina kuin ne on kirjoitettu.


Henkilöstöhallinto: työpaikkailmoitukset

Kun HR julkaisee työpaikkoja Odoo Recruitmentilla, työkuvaus tallennetaan Html-kenttään hr.job- ja hr.applicant-malleissa. Tämä mahdollistaa selkeät osiot vastuista, vaatimuksista ja eduista — muotoiltu sisältö näyttää ammattimaiselta rekry-sivulla ja auttaa houkuttelemaan sopivia hakijoita.

Html-kentän luominen ja muokkaus


Html-kentän lisäämiseen on kolme pääasiallista tapaa riippuen teknisestä ympäristöstäsi.


Odoo Studio (ilman koodausta)

Odoo Studiolla Html-kentän lisääminen olemassa olevaan lomakkeeseen on helppoa ilman koodausta:

  1. Avaa Odoo Studio päävalikosta.
  2. Siirry siihen lomakkeeseen, johon haluat kentän.
  3. Vedä sivupalkista Html- tai Rich Text -kenttä lomakkeeseen.
  4. Aseta kentän otsikko ja muut ominaisuudet kenttäasetuksissa.
  5. Tallenna ja sulje Studio.

Studio luo kentän automaattisesti x_studio_-etuliitteellä, lisää sen näkymään ja hoitaa tietokantasarakkeen. Ei erillistä migraatiota tai deploy-vaihetta — kenttä on heti käytettävissä.


Python mukautetussa moduulissa

Kehittäjille Html-kentät määritellään Python-malleissa. Tämä on suositeltava tapa, kun haluat versiohallinnan ja hallitun käyttöönoton staging- ja tuotantoympäristöihin:


from odoo import fields, models

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

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

Määriteltyä kenttää lisätään sitten näkymä-XML:ään, jotta se näkyy käyttöliittymässä. Odoo luo TEXT-sarakkeen automaattisesti moduulin asennuksessa tai päivityksessä, ja kenttä renderöityy lomakkeessa rich text -editorina ilman lisäasetuksia.


XML-RPC API:n kautta

Jos hallinnoit Odoo-muutoksia ohjelmallisesti deployment-pipelineissa tai etäkonfigurointiskripteissä, Html-kentän voi luoda XML-RPC:n avulla:

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' kertoo Odoolle, että kenttä on Html-tyyppinen. state: 'manual' merkitsee, että kenttä on käyttäjän luoma eikä moduulin määrittämä. Tämä lähestymistapa sopii automatisoituihin asennuksiin ja etähallintaan.


Huomaa, että sanitointiin liittyviä asetuksia (sanitize, sanitize_tags jne.) ei aina voi asettaa samalla tavalla XML-RPC:n kautta kuin Python-mallissa — API:n kautta luodut kentät noudattavat oletussanitointi-käytäntöä.

Parhaat käytännöt


1. Pidä sanitize päällä ellei ole painavaa syytä poistaa se

Oletussanitointi suojaa Odoo-instanssiasi XSS-haavoittuvuuksilta. Useimmat käyttötapaukset toimivat oikein sanitoinnin kanssa. Poista se vain, jos sisältö tulee täysin luotettavasta lähteestä (esim. palvelinpuolen renderöity pipeline) — älä koskaan poista sitä käyttäjien syöttämästä tai ulkopuolisesta sisällöstä.


2. Käytä translate=True monikielisessä sisällössä

Jos Odoo-ympäristösi palvelee useita kieliä, Html-kentät, jotka näkyvät verkkosivulla tai asiakaskontakteille, kannattaa tehdä käännettäviksi (translate=True). Näin voit ylläpitää eriytettyä HTML-sisältöä per kieli, jolloin asiakkaat näkevät kuvaukset omalla kielellään.


3. Vältä ulkoisten resurssien varassa olevaa HTML:ää

Ulkoisten kuvien tai skriptien upottaminen Html-kenttään luo riippuvuuksia, jotka voivat katketa, jos ulkoiset osoitteet muuttuvat tai poistuvat. Käytä Odoon liitetiedostojärjestelmää ja tallenna kuvat sisäisesti, viittaa niihin suhteellisilla osoitteilla. Näin sisältö siirtyy helpommin tietokantasi ja palvelinten välillä.


4. Hyödynnä laskettuja Html-kenttiä dynaamiseen sisältöön

Kun sisältö pitää rakentaa ohjelmallisesti — esim. tilauksen rivien yhteenveto tai dynaaminen takuu-ehto — compute-kenttä, jossa on store=True, on järkevä ratkaisu. Laskenta tapahtuu yhdessä paikassa, lopputulos tallennetaan ja sisältö näkyy oikein niin käyttöliittymässä kuin PDF-raporteissakin.


5. Valitse Html vai Text renderointikontekstin mukaan

Jos sisältö näkyy vain backendissä ja sen tarvitsee olla pelkkää tekstiä, Text-kenttä saattaa riittää. Käytä Htmlia silloin, kun muotoilu on lukijan kannalta tärkeää — verkkosivuilla, tulosteissa tai sähköposteissa. Turhan Html-kentän lisääminen yksinkertaiseen muistiinpanoon voi vain hankaloittaa käyttöä.

Yleiset sudenkuopat


Sanitoinnin pois päältä laittaminen ja unohtaminen

Asetus sanitize=False kentälle, jota käyttäjät voivat muokata, on turvallisuusriski. Helppo tapa on kytkeä se pois kehityksessä ja unohtaa palauttaa ennen tuotantoon menoa. Kirjaa aina miksi sanitointi on poistettu ja suunnittele tarkistus ennen julkaisua.


Leikepöydältä liitetyn sisällön rikkinäinen HTML

Käyttäjät, jotka liittävät sisältöä Wordista, Google Docsista tai verkkosivuilta, tuovat usein mukanaan sotkuista tai ei-standardi HTML:ää. Tämä voi aiheuttaa epätasaista renderöintiä, näkymättömiä erikoisia merkkejä tai paisuttaa arvoja, mikä hidastaa sivujen latausta. Kehota käyttämään "liitä ilman muotoilua" -vaihtoehtoa ja muotoile uudelleen Odoon editorissa.


Html-kentän sekoittaminen verkkosivun rakentajan sisältöön

Odoon verkkosivurakentaja käyttää rakennuspalikoita ja Owl-komponentteja, joiden tallentama HTML poikkeaa tyypillisestä Html-kentästä. Monimutkaisen sivurakentajan HTML:n kopioiminen mallin Html-kenttään toimii harvoin odotetusti ja saattaa poistua sanitoinnissa.


Kääntäminen unohtuu monikielisissä käyttöönotossa

Monikielisessä ympäristössä Html-kenttä ilman translate=True näyttää saman sisällön kaikille kielille. Tämä on ongelma tuotteille, sähköpostipohjille ja kaikelle ulospäin menevälle sisällölle. Asetuksen puuttuminen on helppo virhe ja vaikea korjata jälkikäteen, kun sisältöä on jo syötetty yhdeksi kieleksi.


Html-kenttien käyttö paikoissa, joissa odotetaan pelkkää tekstiä

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.

Yhteenveto


Html-kenttä on yksi Odoon tehokkaimmista kenttätyypeistä. Se toimii taustalla tuoteteksteissä, sähköpostipohjissa, työpaikkailmoituksissa ja laskujen huomautuksissa, mahdollistaen muotoillun sisällön ilman ulkopuolisia työkaluja.


Kun ymmärrät miten kenttä käyttäytyy — erityisesti sanitoinnin, käännöstuen ja eri renderointikontekstien osalta — teet parempia ratkaisuja Odoo-mallia rakentaessa. Olipa käytössäsi Studio, Python-moduuli tai API, tässä oppaassa käsitellyt periaatteet pätevät kaikissa kolmessa tapauksessa.


Kuten monessa muussakin Odoon ominaisuudessa, itse kenttä on yksinkertainen kun tiedät, mitä taustalla tapahtuu. Arvo syntyy siitä, että käytät sitä oikeissa paikoissa, oikeilla asetuksilla ja oikeanlaiseen sisältöön.

Dasololla autamme yrityksiä ottamaan Odoon käyttöön ja optimoimaan sen eri osastoilla. Tarvitsetpa apua tietomallin suunnittelussa, räätälöityjen kenttien lisäämisessä tai kokonaisen moduulin rakentamisessa, tiimimme on valmis auttamaan. Ota yhteyttä meihin ja keskustellaan Odoo-projektistasi.

Odoo HTML Field: Täydellinen Opas Kehittäjille
Dasolo 6. maaliskuuta 2026
Jaa tämä kirjoitus
Kirjaudu sisään jättääksesi kommentin