Siirry sisältöön

Readonly-kenttä Odoossa: Käytännön Opas

Opi, miten readonly-kentät toimivat Odoo ORM:ssä, milloin niitä käytetään ja miten ne konfiguroidaan Studiolla tai Pythonilla
6. maaliskuuta 2026 kirjoittanut
Readonly-kenttä Odoossa: Käytännön Opas
Dasolo
| Ei vielä kommentteja

Readonly-kentät ovat yksi niistä ominaisuuksista Odoossa, jotka vaikuttavat aluksi yksinkertaisilta, mutta niillä on paljon suurempi rooli kuin useimmat käyttäjät odottavat.


Olitpa sitten liiketoimintakäyttäjä, joka ihmettelee, miksi tietyt kentät ovat harmaantuneet, tai kehittäjä, joka haluaa hallita kenttäkäyttäytymistä Odoo-mukautuksessasi, tämä opas kattaa kaiken, mitä sinun tarvitsee tietää.

Ymmärtäminen siitä, kuinka readonly-kentät toimivat, on avain luotettavien työnkulkujen rakentamiseen, tietojen eheyden suojaamiseen ja sujuvamman kokemuksen tarjoamiseen tiimillesi.


Tämä Odoo-kenttäopas käy läpi sekä liiketoiminta- että teknisiä puolia readonly-kentistä, joten olitpa sitten konfiguroimassa Odoota tai rakentamassa sen päälle, löydät täältä tarvitsemasi.

Mikä on Odoon readonly-kenttä


Readonly-kenttä Odoossa on kenttä, joka näyttää arvon, mutta jota käyttäjä ei voi muokata suoraan käyttöliittymän kautta. Tiedot ovat näkyvissä, mutta syöttö on lukittu.


Muoto-näkymässä vain luku -kentät näkyvät tyypillisesti tavallisena tekstinä sen sijaan, että ne olisivat interaktiivisia syöttölaatikoita. Odoo-teemasta riippuen ne saattavat näyttää hieman harmaantuneilta tai yksinkertaisesti tasaisilta verrattuna muokattaviin kenttiin.

Odoo-tietomallissa vain luku -käyttäytyminen voidaan soveltaa kahdella eri tasolla:


  • Kenttätasolla (Python/ORM): kenttä on aina vain luku -tilassa kaikissa näkymissä ja konteksteissa
  • Näkymätasolla (XML): kenttä on vain luku -tilassa tietyssä näkymässä tai tietyissä olosuhteissa

Tämä erottelu on tärkeä. ORM-tasolla merkittyä vain luku -kenttää ei voida muokata minkään käyttäjäliittymän kautta. Näkymätasolla merkitty vain luku -kenttä on suojattu kyseisessä kontekstissa, mutta se saattaa silti olla kirjoitettavissa muissa näkymissä tai palvelinpuolen koodin kautta.


Vain luku ei ole itsessään kenttätyyppi. Se on attribuutti, jota voidaan soveltaa mihin tahansa Odoo:n standardikenttätyyppiin: Char, Integer, Float, Many2one, Date ja muihin. Tämä on keskeinen osa Odoo-kehystä kenttien käyttäytymisen hallitsemiseksi ajonaikaisesti.

Kuinka readonly-kenttä toimii


Ymmärtääksemme, miten vain luku -kentät käyttäytyvät, on hyödyllistä tarkastella molempia puolia: Odoo ORM (Python) ja näkymäkerros (XML).


Vain luku ORM-tasolla

Odoo ORM:ssa kenttä voidaan julistaa pysyvästi vain luku -tilaan suoraan Python-mallissa. Tämä on yleisintä lasketuissa kentissä, jotka saavat arvonsa muista tiedoista. Kenttä määrittelyyn sisältyy readonly=True parametrina, ja Odoo ei koskaan salli käyttäjän muokata sitä käyttöliittymän kautta.


Tämä vain luku -taso on osa Odoo Python kenttä-API:a ja se on dokumentoitu virallisessa Odoo-kehittäjäoppaassa. Se soveltuu globaalisti, riippumatta siitä, mikä näkymä on käytössä.


Tilaperusteinen vain luku

Yksi yleisimmistä malleista Odoo-kehityksessä on tehdä kentästä vain luku -tila asiakirjan nykyisen tilan perusteella. Näin standardimoduulit, kuten Myynti, Ostot ja Kirjanpito, lukitsevat tietonsa, kun asiakirja siirtyy luonnosvaiheen ohi.


Odoo 16:sta ja aikaisemmista versioista lähtien tämä tehtiin käyttämällä attrs-attribuuttia näkymän XML:ssä, yhdistämällä domain-ehdon kenttäelementtiin. Odoo 17:ssä ja myöhemmissä versioissa syntaksi on tiiviimpi ja kirjoitettu suoraan kenttäelementin inline-ilmaisuna.


Molemmat lähestymistavat saavuttavat saman tuloksen: kenttä on muokattavissa, kun asiakirja on luonnoksena, ja se lukitaan, kun se etenee työnkulun läpi. Tämä on peruskäsite kaikissa Odoo-teknisissä oppaissa, jotka käsittelevät kenttäkonfiguraatiota.


Laskennalliset kentät ja vain luku

Odoon laskennalliset kentät ovat oletusarvoisesti vain luku -tilassa. Kun määrität kentän compute-menetelmällä, Odoo olettaa, että sitä ei pitäisi muokata suoraan, koska sen arvo johdetaan automaattisesti muista kentistä.


Jos haluat, että laskennallinen kenttä tallennetaan myös, asetat sekä compute-parametrin että store=True. Nämä tallennetut Odoo-tietokantakentät ovat yleinen malli suorituskyvyn optimoinnissa, koska niitä voidaan käyttää hakusuodattimissa ja lajitella tehokkaasti tietokannan tasolla ilman, että arvoja lasketaan uudelleen lennossa.


Laskennallisen kentän tekeminen muokattavaksi

Jos tarvitset laskennallisen kentän, joka hyväksyy myös manuaalisen syötteen, voit määrittää sen rinnalle käänteismenetelmän. Käänteismenetelmä kertoo Odoolle, mitä tehdä, kun käyttäjä kirjoittaa arvon laskennalliseen kenttään. Ilman käänteistä menetelmää kenttä pysyy oletusarvoisesti vain luku -tilassa. Tämä on osa edistyneempiä Odoo ORM -kenttätyyppejä API:ssa ja siitä käsitellään syvällisesti Odoo-kehittäjän oppaassa.

Liiketoimintakäyttötapaukset


Vain luku -kenttiä esiintyy kaikissa Odoo-moduuleissa. Tässä on viisi käytännön esimerkkiä todellisista liiketoimintatyönkuluista.


1. CRM: Voitetun ja hävityn mahdollisuuden tietojen lukitseminen

CRM-moduulissa odotettu liikevaihto ja sulkemispäivämäärä ovat muokattavissa, kun liidiä työstetään. Kun mahdollisuus merkitään voitetuksi tai hävityksi, nämä kentät asetetaan vain luku -tilaan, jotta säilytetään tarkka kirjaus siitä, mitä on suljettu ja millä arvolla.


Tämä estää ketään menemästä takaisin ja säätämästä lukuja jälkikäteen, mikä vääristäisi myyntiraportteja ja putkianalytiikkaa.


2. Myynti: Vahvistettujen tilausten rivien suojaaminen

Kun myyntitilaus siirtyy luonnoksesta vahvistetuksi, tilausrivistä tulee vain luku -tilassa. Käyttäjät eivät voi enää muuttaa tuotetta, määrää tai hintaa sen jälkeen, kun asiakas on saanut vahvistuksen.


Jos muutoksia todella tarvitaan, tilaus on nimenomaisesti palautettava luonnokseen, mikä luo tarkastuspolun ja tekee korjauksesta tarkoituksellisen eikä vahingossa tapahtuvan.


3. Varasto: Vahvistetut varastosiirtojen määrät

Varastotoiminnoissa, kun toimitus tai vastaanotto on vahvistettu, tehdyt määrät lukitaan. Tämä suojaa varaston arvostuksen eheyttä ja varmistaa, että tiedot vastaavat sitä, mitä fyysisesti siirtyi varaston läpi.


Muokattavat määrät vahvistamisen jälkeen voisivat hiljaisesti vääristää varastotasoja useissa sijainneissa.


4. Kirjanpito: Kirjatut päiväkirjamerkinnät

Kirjanpidossa, kun päiväkirjamerkintä on kirjattu, kaikki sen rivit muuttuvat vain luku -tilaan. Tämä on sekä monien maiden lakisääteinen vaatimus että kaksoiskirjanpidon keskeinen periaate.


Muokkausten salliminen kirjaamisen jälkeen vaarantaisi taloudellisten lausuntojen luotettavuuden ja aiheuttaisi vakavia vaatimustenmukaisuusriskejä.


5. Valmistus: Valmiiden työtilausdatan tiedot

Valmistusmoduulissa, kun työtilaus merkitään valmiiksi, todellinen kesto ja tuotetut määrät asetetaan vain luku -tilaan. Tämä säilyttää tarkat tuotantotiedot, jotka syötetään kustannusanalyysiin ja suorituskyvyn seurantaan.

Readonly-kentän luominen tai mukauttaminen


Odoossa on kaksi pääpolkua määrittää vain luku -kenttiä: käyttää Odoo Studiota ilman koodia tai kirjoittaa Pythonia ja XML:ää suoraan täydellistä teknistä hallintaa varten.


Käyttämällä Odoo Studiota

Odoo Studio -kentät tekevät helppoa lisätä tai muokata vain luku -käyttäytymistä ilman koodin kirjoittamista. Konfiguroidaksesi kentän vain luku -tilaan Studion avulla:

  1. Avaa Odoo Studio päävalikosta (kynäkuvake)
  2. Siirry lomake-näkymään, jossa haluat konfiguroida kentän
  3. Napsauta kenttää, jota haluat muokata
  4. Oikeanpuoleisessa ominaisuuspaneelissa, kytke "Readonly" -vaihtoehto päälle
  5. Tallenna ja sulje Studio

Studio mahdollistaa myös ehdollisen vain luku -käyttäytymisen asettamisen käyttämällä domainilausekkeita. Esimerkiksi voit tehdä kentästä vain luku -tilan vain silloin, kun tilakenttä on yhtä suuri kuin tietty arvo, kirjoittamatta yhtään riviä koodia.


Odoo Studion luontikenttä -lähestymistapa on oikea valinta konsulteille ja ylläpitäjille, jotka tarvitsevat tietosääntöjen täytäntöönpanoa nopeasti ja turvallisesti. Studioon tehdyt muutokset tallennetaan tietokantaan eivätkä ne ylikirjoiteta moduulin päivitysten yhteydessä.


Pythonin käyttäminen tekniseen mukauttamiseen

Kehittäjille, jotka rakentavat mukautettuja Odoo -moduuleja, readonly-attribuutti asetetaan suoraan kenttämäärittelyyn Python-mallissa. Tämä on standardi Odoo Python -kenttien käyttö ja se kattaa jokaisen Odoo-kehittäjän oppaan.


Voit asettaa readonly=True staattiseksi parametreksi mille tahansa kenttätyypille, jolloin se on pysyvästi muokkaamaton. Joustavampaa hallintaa varten states -parametri mahdollistaa määrittää, missä asiakirjan tiloissa kentän tulisi olla kirjoitettavissa verrattuna vain luku -tilaan.


Tämä lähestymistapa on erityisen hyödyllinen, kun lisäät mukautettuja kenttiä olemassa oleviin Odoo-malleihin osana Odoo-mukautusprojektia. Se pitää kenttälogiikan lähellä tietomallia sen sijaan, että se olisi hajallaan useissa näkymätiedostoissa.


XML-näkymäattribuuttien käyttäminen

Näkytason vain-luku -käyttäytymisen saavuttamiseksi lisäät readonly -attribuutin suoraan kenttäelementtiin näkymä-XML:ssäsi. Tämä on osa Odoo-kehityksen vakiotyöskentelyä kaikille teknisille mukautuksille.

Näkytason vain-luku -ominaisuuden etu on joustavuus: sama kenttä voi käyttäytyä eri tavoin eri näkymissä tai eri olosuhteissa ilman, että taustalla olevaa kenttämäärittelyä muutetaan. Tämä on usein suosittu lähestymistapa, kun sinun on lisättävä rajoituksia olemassa oleviin vakiokenttiin ilman, että niiden Python-määrittelyä muutetaan.


Odoo 17:ssä inline-lausekkeen syntaksi vain-luku -ehdoille on siistimpi ja luettavampi kuin aikaisemmissa versioissa käytetty vanhempi attrs -sanakirjasyntaksi. Molemmat lähestymistavat ovat voimassa riippuen siitä, mitä Odoo-versiota käytät.

Parhaat käytännöt


Vain-luku -kenttien hyvä käyttö perustuu niiden soveltamiseen oikealla tasolla, oikeasta syystä. Tässä ovat tärkeimmät ohjeet Odoo-konsultoinnin näkökulmasta.


1. Suosi näkytason vain-luku -käyttäytymistä, kun konteksti vaihtelee

Jos kentän on oltava vain-luku vain tietyissä asiakirjatiloissa tai tietyissä näkymissä, sovella vain-luku -attribuuttia näkytasolla sen sijaan, että käyttäisit mallitasoa. Tämä pitää Odoo-tietomallisi joustavana ja mahdollistaa taustaprosessien tai API-integraatioiden kirjoittaa kenttään tarvittaessa.


2. Yhdistele vain-luku -ehdot asiakirjan elinkaaren kanssa

Vain-luku -ehtosi tulisi vastata asiakirjojesi luonnollista kulkua. Kenttien tulisi lukkiutua, kun asiakirja saavuttaa tilan, jossa lisämuokkaukset aiheuttaisivat ongelmia. Tämä luo ennakoitavan ja intuitiivisen kokemuksen käyttäjille, mikä on yksi hyvin toteutetun Odoo-mukautuksen tunnusmerkeistä.


3. Testaa eri käyttäjärooleissa

Vain-luku -käyttäytyminen voi vuorovaikuttaa käyttöoikeuksien kanssa odottamattomilla tavoilla. Testaa aina kokoonpanosi sekä tavallisena käyttäjänä että järjestelmänvalvojana varmistaaksesi, että kenttä käyttäytyy oikein jokaiselle roolille. Se, mikä näyttää olevan vain-luku yhdelle käyttäjäryhmälle, saattaa silti olla muokattavissa toiselle heidän profiilistaan riippuen.


4. Yhdistä vain-luku -käyttäytyminen pakolliseen, kun se on järkevää

Monivaiheisissa lomakkeissa kenttä saattaa olla pakollinen luonnoksessa, mutta vain luku -tilassa myöhemmissä vaiheissa. Voit yhdistää molemmat attribuutit näkymä-XML:ssäsi tämän mallin puhtaaseen toteuttamiseen. Tämä on yleistä kentille, kuten toimituspäiville tai viitenumeroille, jotka on täytettävä ennen asiakirjan vahvistamista.


5. Dokumentoi vain luku -logiikkasi

Mukautetussa Odoo-kehityksessä, erityisesti monimutkaisissa tietomalleissa, lisää aina kommentti, joka selittää, miksi kenttä on vain luku -tilassa. Tulevien kehittäjien, jotka ylläpitävät koodia, on ymmärrettävä liiketoimintasyy rajoitukselle, ei vain tekninen toteutus.


6. Käytä Studio-kenttiä nopeisiin, päivityksille turvallisiin muutoksiin

Yksinkertaisissa käyttötapauksissa Odoo Studio -kentät tarjoavat nopean ja päivityksille turvallisen tavan lisätä vain luku -käyttäytymistä. Varaa Python-mukautukset tilanteisiin, joissa Studio ei voi toimittaa vaadittua logiikkaa, kuten monimutkaisille kenttäkohtaisille ehdoille tai integroinnille mukautettujen laskettujen kenttien kanssa.

Yleisimmät sudenkuopat


Jopa kokeneet Odoo-käyttäjät ja -kehittäjät kohtaavat samoja ongelmia vain luku -kenttien kanssa. Tässä ovat ne, jotka kannattaa tietää ennen kuin ne yllättävät sinut.


Sekava näkymätason vain luku -rajoitus ja turvallisuusraja

Kenttä, joka on asetettu vain luku -tilaan näkymässä, ei estä päivityksiä XML-RPC-API:n, ORM-kirjoituskutsujen Pythonissa tai palvelin-toimintojen kautta. Näkymätason vain luku -rajoitus on käyttöliittymän rajoitus, ei turvallisuusohjaus. Jos sinun todella tarvitsee estää kaikki kirjoitukset kenttään, sinun on valvottava sitä ORM-tasolla tai käyttöoikeussääntöjen kautta, ei vain näkymässä.


Kenttien tekeminen pysyvästi vain luku -tilaan, kun ehdollinen olisi parempi

On houkuttelevaa lukita kenttä kokonaan, kun haluat suojata sitä. Mutta jos käyttäjät tarvitsevat laillisesti muokata sitä tietyissä tilanteissa, kuten asiakirjan palauttamisessa luonnokseen, pysyvä ORM-tason vain luku -rajoitus estää heitä kokonaan, mukaan lukien kaikki korjausprosessit. Ajattele aina koko elinkaarta ennen pysyvän ja ehdollisen valitsemista.


Unohtaminen onchange-menetelmistä

Jos vain luku -kenttä on myös viitattu onchange -menetelmässä, tämä menetelmä voi silti yrittää määrittää arvoa sille. Tämä voi tuottaa sekavaa käyttäytymistä, jossa kenttä näyttää päivittyvän käyttäjän vuorovaikutuksen aikana, mutta sitten palautuu tai laukaisee virheen. Varmista, että onchange-logiikkasi ottaa huomioon vain luku -kentät.


Ei sovelleta readonly-tilaa johdonmukaisesti kaikissa näkymissä

Kenttä, joka on merkitty readonly-tilaksi lomakenäkymässä, saattaa silti olla muokattavissa luettelonäkymässä tai kanban-näkymässä, jos nämä näkymät eivät sisällä samaa rajoitusta. Tarkista aina, että readonly-konfiguraatiosi on sovellettu johdonmukaisesti kaikissa näkymissä, joissa kenttä esiintyy.


Sivuvaikutukset perittäessä standardimalleja

Kun peritään standardia Odoo-mallia ja lisätään readonly=True olemassa olevaan kenttään, tämä muutos vaikuttaa kaikkiin näkymiin, jotka näyttävät kyseisen kentän, mukaan lukien standardinäkymät. Varmista, että tämä on tarkoituksellista eikä se riko standardin Odoo-käyttäytymistä tai aiheuta ristiriitoja muiden mukautusten kanssa samassa mallissa.


Yhteenveto


Readonly-kentät ovat keskeinen työkalu Odoossa käyttäjien ohjaamiseksi työnkulkujen läpi, tietojen eheyden suojaamiseksi ja liiketoimintasääntöjen täyttämiseksi ilman, että pelkästään koulutukseen luotetaan.


Avain on tietää, milloin soveltaa readonly-tilaa näkymätasolla verrattuna mallitasoon, ja varmistaa, että ehdot vastaavat sitä, miten tiimisi todella työskentelee. Hyvin konfiguroitu Odoo-tietomalli käyttää aina harkiten readonly-kenttiä oikeissa hetkissä asiakirjan elinkaaren aikana.


Olipa kyseessä Odoo Studion kautta konfiguroiminen ilman koodia tai niiden määrittäminen suoraan Pythonissa ja XML:ssä osana laajempaa Odoo-kehitysprojektia, readonly-kenttien logiikka pysyy johdonmukaisena: näytä tiedot, mutta suojaa ne tahattomilta muutoksilta.


Ne eivät ehkä ole eniten keskusteltu aihe Odoo-mukautuksessa, mutta ne ovat hiljaa yksi vaikutusvaltaisimmista.

At Dasolo, autamme yrityksiä toteuttamaan, mukauttamaan ja optimoimaan Odoo:ta kaikilla moduuleilla ja toimialoilla. Jos tarvitset apua kenttien konfiguroimisessa, luotettavien työnkulkujen suunnittelussa tai Odoo-tietomallisi parantamisessa, tiimimme on valmis tukemaan sinua. Ota yhteyttä ja kerro meille projektistasi.

Readonly-kenttä Odoossa: Käytännön Opas
Dasolo 6. maaliskuuta 2026
Jaa tämä kirjoitus
Kirjaudu sisään jättääksesi kommentin