Siirry sisältöön

ir.model-malli: Odoo’n mallirekisterin rakenne ja toiminta

Täydellinen opas Odoon mallin metatietorakenteeseen — selkeä kuvaus siitä, miten jokainen malli järjestelmässä on määritelty, mitä kenttiä ja suhteita käytetään sekä miten metatiedot ohjaavat liiketoimintalogiikkaa ja käyttöliittymää.
11. maaliskuuta 2026 kirjoittanut
ir.model-malli: Odoo’n mallirekisterin rakenne ja toiminta
Dasolo
| Ei vielä kommentteja

Johdanto


Odoossa kaikki liiketoimintatiedot — laskut, myyntitilaukset, yhteystiedot ja niin edelleen — tallennetaan rakenteina, joita kutsutaan malleiksi. Nämä mallit määrittelevät, miten tiedot jäsennellään ja säilytetään tietokannassa.


Mallien ymmärtäminen on välttämätöntä sekä kehittäjille että toiminnallisille asiantuntijoille. Mallit muodostavat Odoon tietomallin ytimen: niiden kautta määritellään kentät, liittymät ja sovelluslogiikka.


Mutta mistä Odoo pitää kirjaa kaikista järjestelmässä olevista malleista? Sitä varten on ir.model. Se on metatietorekisteri, joka sisältää tiedot kaikista muista malleista — olitpa rakentamassa moduuleja, tutustumassa API:in tai korjaamassa ongelmia, ir.model tulee vastaan.

Mikä on ir.model-malli


ir.model on siis Odoon malli‑rekisteri, jossa on yksi tietue per järjestelmän malli. Kun määrittelet uuden mallin Pythonissa tai luot sen Studio‑työkalulla, Odoo luo tai päivittää vastaavan ir.model‑tietueen.


Tämä rekisteri kuuluu Odoon perusmoduuliin ja on osa ydinkehystä. Kaikilla malleilla — tavallisilla, abstrakteilla tai väliaikaisilla (transient) — on oma merkintänsä ir.modelissa.


ir.model on tiiviissä yhteydessä ir.model.fields‑tauluun, joka kuvaa mallin kenttiä. Yhdessä nämä kaksi muodostavat Odoon kyvyn tarkastella ja käsitellä mallien rakennetta dynaamisesti.


Kehittäjät hyödyntävät ir.modelia esimerkiksi listatessaan käytettävissä olevia malleja, selvittäessään perintäsuhteita tai rakentaessaan työkaluja, jotka toimivat minkä tahansa mallin kanssa. ir.model on myös luettavissa Odoon XML‑RPC‑ ja JSON‑RPC‑rajapinnoista.

Mallin keskeiset kentät


Seuraavaksi käydään läpi tärkeimmät kentät ir.model‑tietueissa — niiden tuntemus helpottaa rekisterin kanssa työskentelyä ja integraatioiden rakentamista.


1. name

Tyyppi: Char. Ihmislukuinen otsikko mallille. Tämä nimi näkyy Teknisen asetuksenäkymissä ja kehittäjätyökaluissa, ja se voi olla käännettävä. Se toimii mallia kuvaavana tunnisteena käyttöliittymässä.


2. model

Tyyppi: Char. Mallin tekninen nimi, jota käytät Python‑koodissa, esimerkiksi res.partner tai sale.order. Kenttä on pakollinen ja indeksoitu nopeaa hakua varten.


3. info

Tyyppi: Text. Lisätietoja tai kommentteja mallista—vapaamuotoinen dokumentaatio. Usein tyhjä, mutta hyödyllinen sisäiseen dokumentointiin.


4. state

Tyyppi: Selection. Kertoo, onko malli osa perustarjontaa (base) vai luotu manuaalisesti (manual) esimerkiksi Studio‑työkalulla. Base‑malleja suojellaan tiukemmin kuin manuaalisia.


5. transient

Tyyppi: Boolean. Merkitsee, onko kyseessä väliaikainen malli. Transient‑mallien tietueet siivotaan automaattisesti — niitä käytetään mm. ohjauselementeissä ja väliaikaisissa lomakkeissa.


6. field_id

Tyyppi: One2many (ir.model.fields). Lista mallille määritellyistä kentistä. Jokainen ir.model.fields‑tietue kuvaa yhden kentän nimeä, tyyppiä ja asetuksia.


7. access_ids

Tyyppi: One2many (ir.model.access). Mallin käyttöoikeudet. Kukin tietue kertoo, mitkä ryhmät voivat luoda, lukea, muokata tai poistaa tietueita — tärkeä osa turvallisuuskonfiguraatiota.


8. rule_ids

Tyyppi: One2many (ir.rule). Malliin liittyvät tietuerajat (record rules). Näillä säännellään, mitä tietueita kukin käyttäjäryhmä näkee — rivitason turvallisuus.


9. inherited_model_ids

Tyyppi: Many2many (ir.model). Ne vanhemmat mallit, joilta nykyinen malli perii ominaisuuksia. Kun malli perii toisen, sen yhteydet näkyvät tässä kentässä.


10. modules

Tyyppi: Char. Laskennallinen kenttä, joka näyttää moduulit, joissa malli määritellään tai laajennetaan. Hyödyllinen riippuvuuksien ymmärtämiseen.


11. sort

Tyyppi: Integer. Näyttöjärjestys Teknisten asetusten listassa — pienemmät arvot nousevat ensin. Auttaa järjestämään malleja hallintanäkymissä.


12. constrains

Tyyppi: Text. Python‑tason rajoitteiden määrittelyt (@api.constrains). Tallentaa mallikohtaisia validointisääntöjä.


13. post_constrains

Tyyppi: Text. Jälkivahvistuksiin liittyvä Python‑koodi. Käytetään tarkempaan tai vaiheistettuun validointiin.


14. sql_constraints

Tyyppi: Text. Tietokantatason rajoitteet, kuten uniikit indeksit. Varmistaa datan eheyden tietokantatasolla.


15. view_ids

Tyyppi: One2many (ir.ui.view). Laskennallinen lista malliin liittyvistä näkymistä. Hyödyllinen, kun haluat selvittää, missä näkymissä malli esiintyy.


16. record_count

Tyyppi: Integer. Laskennallinen kenttä, joka kertoo, kuinka monta tietuetta mallissa on — kätevä yleiskatsaus datan määrään.


17. display_name

Tyyppi: Char. Laskennallinen esitysnimi, joka näytetään listoissa ja relaatiokentissä. Usein yhdistää name‑ ja model‑tiedot selkeäksi tunnisteeksi.


18. create_date

Tyyppi: Datetime. Tietueen luontiaika, jota Odoo ylläpitää automaattisesti.


19. create_uid

Tyyppi: Many2one (res.users). Käyttäjä, joka loi tietueen — hyödyllinen auditointia varten.


20. write_date

Tyyppi: Datetime. Viimeisin muokkausaika, myös automaattisesti ylläpidetty.


21. write_uid

Tyyppi: Many2one (res.users). Viimeksi muokannut käyttäjä — myös auditointiin liittyvä tieto.


22. active

Tyyppi: Boolean. Pehmeän poistamisen eli arkistoinnin merkki. Kun arvo on False, malli on käytännössä deprekoitu mutta säilyy historiassa.


23. id

Tyyppi: Integer. Tietokannan uniikki tunniste jokaiselle ir.model‑tietueelle — käytetään myös API‑viittauksissa.


24. restrict_functionality

Tyyppi: Boolean. Merkitsee, että mallin toiminnallisuutta voi olla rajoitettu eri Odoo‑versioissa (esim. Enterprise vs Community).


25. is_mail_thread

Tyyppi: Boolean. Ilmoittaa, onko malli viestiketjuominaisuutta (chatter) tukeva. Jos kyllä, mallilla voi olla viestejä ja seuraajia.


26. is_mail_activity

Tyyppi: Boolean. Kertoo, tukeeko malli aktiviteetteja ja tehtäväsuunnittelua — käytetään seuraavien toimenpiteiden hallintaan.

Miten tätä mallia käytetään liiketoimintaprosesseissa


1. Tekninen asetukset ja konfigurointi

Järjestelmän ylläpitäjät selaavat malleja Teknisen asetuksen kautta. ir.model‑tietueet määrittelevät, mitä listauksessa näkyy: nimi, kuvaus ja kenttien määrä antavat nopeasti käsityksen mallin sisällöstä.


2. Käyttöoikeuksien hallinta

Turvallisuusasetuksia tehdessäsi määrität ryhmien oikeudet. ir.modelin access_ids kertoo, kuka saa luoda, lukea, muokata tai poistaa tietueita kullakin mallilla.


3. Odoo Studio -räätälöinnit

Kun käyttäjä luo oman mallin Studio‑työkalulla, Odoo lisää uuden ir.model‑tietueen tilaksi manual ja täyttää field_id‑suhteen uusilla kentillä.


4. API‑integraatioiden löydettävyys

Ulkoiset järjestelmät voivat tutkia käytettävissä olevia malleja XML‑RPC‑ tai JSON‑RPC‑rajapintojen kautta. ir.model tarjoaa tarvittavan metadatan integraatioiden rakentamiseen ja automaattiseen yhteentoimivuuteen.


5. Moduulikehitys ja virheenkorjaus

Kehittäjät käyttävät ir.modelia moduuleja rakentaessaan: he tarkastavat perintäsuhteet inherited_model_ids‑kentästä ja tutkivat mallin kenttiä field_id:stä ymmärtääkseen, mitä muutokset vaikuttavat.

Miten kehittäjät laajentavat tätä mallia


Kehittäjät eivät yleensä yliajaa ir.modelin omia metodeja. Rekisteri päivittyy automaattisesti moduuleja ladattaessa, ja sen sijaan muokataan kuvattuja malleja tarvittaessa.


Mallien perintä

Kun käytät Pythonissa _inherit = 'res.partner', Odoo päivittää res.partnerin ir.model‑merkintää ja uusi lapsimalli linkittää itsensä inherited_model_ids‑kenttään. Näin rekisteri pysyy synkronissa perintärakenteiden kanssa.


Kenttien lisääminen

Kun lisäät uusia kenttiä malliin, Odoo luo ir.model.fields‑tietueet, jotka viittaavat malliin model_id‑kentän kautta. Varsinainen ir.model‑tietue ei yleensä muutu kenttien lisäämisen myötä.


Python‑laajennukset

Sen sijaan, että muokkaisit ir.modelia suoraan, laajennat niitä malleja, joita ir.model kuvaa. ir.model on osa ydintä eikä ole tarkoitettu suoraan korvattavaksi.


Odoo Studio

Studio luo tarvittavat ir.model ja ir.model.fields‑tietueet ilman koodia. Transient‑lipuke erottaa väliaikaiset mallit pysyvistä. Abstraktit mallit eivät yleensä synnytä ir.model‑tietuetta, koska niillä ei ole omaa tietokantataulua.

Hyvät käytännöt


  • Käytä ir.modelia mallien tutkintaan ja integraatioiden dynaamiseen rakentamiseen sen sijaan, että kovakoodaisit mallinimet sovellukseen.
  • Hyödynnä model‑kenttää hakuihin — se on indeksoitu ja nopea tapa löytää tietyn mallin metatiedot.
  • Tarkista inherited_model_ids ennen laajennuksia. Ymmärrä perintäketju, jotta muutokset eivät riko olemassaolevaa logiikkaa.
  • Käytä Odoon APIa (XML‑RPC/JSON‑RPC) lukeaksesi ir.model‑tietoja; vältä suoria muutoksia ellei tavoitteena ole rakentaa Studio‑tyyppistä työkalua.
  • Tutki kenttäkohtaisia tietoja ir.model.fields‑taulusta: field_id‑suhde paljastaa kaikki mallin kentät ja niiden asetukset.

Yleisiä virheitä


  • Älä muokkaa ir.model‑tietueita suoraan tuotantotietokannassa ilman hyvää syytä. Rekisteriä hallinnoi Odoo ja manuaaliset muutokset voivat rikkoutua päivityksissä tai rikkoa järjestelmän.
  • Älä sekoita ir.model‑tietuetta Python‑luokan kanssa. ir.model on tietokantatason metadata; varsinainen liiketoimintamalli on Python‑luokka, joka toteuttaa käyttäytymisen.
  • Muista, että kaikki luokat eivät synny ir.model‑tietueina. Abstraktit mallit eivät luo omaa tietokantataulua eivätkä välttämättä ilmesty rekisteriin.
  • Älä käytä transient‑malleja pysyvän datan säilytykseen. Ne on tarkoitettu väliaikaisiin käyttötapauksiin, ja niiden tietueet poistetaan siivousprosessissa.
  • Rajoita ir.model‑kyselyjä: Odoo‑instanssissa voi olla satoja malleja, joten suodata aina model‑nimellä tai käytä hakudomaineja.

Yhteenveto


ir.model on Odoon mallirekisteri, joka tallentaa metatietoa jokaisesta järjestelmän mallista. Kun ymmärrät sen kentät ja yhteyden ir.model.fieldsiin, liiketoimintalogiikan ja integraatioiden hallinta helpottuu.


Olitpa tekninen konsultti selaamassa Teknisiä asetuksia tai kehittäjä rakentamassa integraatioita, hyvä ymmärrys ir.modelista säästää aikaa ja ehkäisee virheitä.

Tarvitsetko apua Odoo‑käyttöönotossasi?


Dasolo auttaa yrityksiä ottamaan käyttöön, räätälöimään ja optimoimaan Odoota. Erikoisosaamistamme ovat API‑integraatiot ja Odoo‑kehitys — tiimillämme on vahva kokemus Odoon tietomallista ja malleista kuten ir.model.


Tarvitsetko apua Odoo‑käyttöönotossa, räätälöidyissä moduuleissa tai integraatioissa? Autamme mielellämme. Varaa demo keskustellaksesi projektistasi.

ir.model-malli: Odoo’n mallirekisterin rakenne ja toiminta
Dasolo 11. maaliskuuta 2026
Jaa tämä kirjoitus
Kirjaudu sisään jättääksesi kommentin