Siirry sisältöön

Odoon Domain Kentät: Täydellinen Opas

Ymmärrä, miten Domain-kenttätyyppi toimii Odoossa, missä se esiintyy ja miten sitä käytetään tietomallissasi ja mukautuksissasi
6. maaliskuuta 2026 kirjoittanut
Odoon Domain Kentät: Täydellinen Opas
Dasolo
| Ei vielä kommentteja

Jos olet käyttänyt aikaa Odoon konfiguroimiseen, olet todennäköisesti törmännyt domain-lausekkeisiin. Nämä sulkujen täyttämät suodatin ehdot ilmestyvät toimintopainikkeissa, automaattisissa säännöissä, tietue-säännöissä ja sähköpostipohjissa koko alustalla. Mutta harvempi tajuaa, että Odoo tarjoaa myös erillisen Domain-kenttätyypin ORM:ssaan, joka on suunniteltu erityisesti näiden lausekkeiden tallentamiseen ja näyttämiseen rakenteellisena tietona.


Domain-kenttien ymmärtäminen on tärkeää, olitpa sitten Odoo-kehittäjä, joka rakentaa mukautettuja moduuleja, tai liiketoimintakäyttäjä, joka konfiguroi automatisoituja työnkulkuja. Tämä opas kattaa kaiken siitä, mitä domain-kenttä oikeastaan tallentaa käytännön esimerkkeihin, kehitysvinkkeihin ja yleisimpiin virheisiin, joita kannattaa välttää.

Mikä on Domain-kenttä Odoossa


Odoossa domain on suodatin ehtojen lista, jota käytetään tietueiden kyselyyn. Se noudattaa tiettyä syntaksia, joka käyttää tuplia ja loogisia operaattoreita, ja se vastaa suoraan SQL WHERE -lausekkeita, kun Odoo suorittaa tietokantakyselyn.

Tyypillinen domain-lauseke näyttää tältä:


[('customer_rank', '>', 0), ('active', '=', True)]

Tämä tarkoittaa: palauta kaikki tiedot, joissa customer_rank on suurempi kuin 0 JA active on tosi.


Domain-kenttä (fields.Domain) on Odoo ORM:ssä kenttätyyppi, joka tallentaa nämä lausekkeet rakenteellisena tietona tietueen sisällä. Toisin kuin tavallisessa tekstikentässä, siinä on sisäänrakennettu validointi ja omistettu UI-widget, joka antaa käyttäjille mahdollisuuden rakentaa suodatinoloja visuaalisesti ilman koodin kirjoittamista.


Miten se näkyy käyttöliittymässä

Odoo-käyttöliittymässä Domain-kenttä renderöidään oletusarvoisesti domain-editori-widgetillä. Tämä widget esittää visuaalisen sääntöjen rakentajan, jossa käyttäjät voivat valita kentän, valita operaattorin (yhtä suuri, sisältää, suurempi kuin jne.) ja syöttää arvon. Se on sama käyttöliittymä, jonka näet määrittäessäsi käyttöoikeussääntöjä tai suodatinperusteita automatisoiduissa toiminnoissa.


Tietokannassa domain-arvot tallennetaan tavallisena tekstinä, erityisesti Python-listan merkkijonoesityksenä. Kenttätyyppi käsittelee sarjallistamista ja validointia läpinäkyvästi, joten kehittäjät työskentelevät puhtaiden domain-arvojen kanssa Pythonissa, kun taas tallennuskerros hoitaa loput.

Tämä on osa laajempaa Odoo-tietomallin suunnittelua: kentät eivät ole vain tallennusastioita. Ne kantavat semanttista merkitystä, käyttöliittymäkäyttäytymistä ja validointilogiikkaa yhdessä määritelmässä.

Kuinka kenttä toimii


Domain-kenttä integroituu tiiviisti Odoo ORM:ään ja tietueiden suodatusjärjestelmään. Tässä on, mitä tapahtuu taustalla, kun tallennat ja arvioit domainin.


Tallennus ja esitys

Kun domain tallennetaan tietokantaan, Odoo tallentaa sen sarjallistettuna merkkijonona. Domain, joka rajoittaa tietueita luonnostilaan nykyiselle käyttäjälle, tallennetaan tekstiarvona, jonka Odoo arvioi kyselyaikana. Erityinen muuttuja uid ratkaistaan nykyiseksi käyttäjä-ID:ksi ajonaikana, mikä mahdollistaa dynaamisen suodattamisen ilman arvojen kovakoodaamista.

Odoo ORM ottaa tämän merkkijonon, arvioi sen turvallisesti ja muuntaa sen SQL WHERE -lauseeksi. Tämä arviointi tapahtuu safe_eval:n kautta, joka tukee hallittua alijoukkoa Python-lausekkeista yhdessä Odoo-spesifisten kontekstimuuttujien kanssa.


Domain-widget

Odoo-käyttöliittymässä fields.Domain-tyyppiset kentät käyttävät oletusarvoisesti domain-widgettiä. Tämä widget esittää suodatinrakentajan, jonka näet monilla Odoo:n osa-alueilla. Käyttäjät voivat lisätä ehtoja, yhdistää niitä JA- tai TAI-logiikalla ja esikatsella tuloksia ilman, että heidän tarvitsee koskea mihinkään koodiin.

Widget on tekee aluekentistä aidosti saavutettavia liiketoimintakäyttäjille. Sinun ei tarvitse ymmärtää alue syntaksia määrittääksesi suodattimen. Visuaalinen rakentaja hoitaa käännöksen puolestasi.


Malli konteksti

Aluekenttä voidaan liittää tiettyyn malliin, joka kertoo Odoolle, mitkä kentät tarjotaan alueen rakentajassa. Määrität tämän model_field attribuutin avulla kenttä määritelmässä. Ilman mallikontekstia aluewidgetti palautuu tavalliseksi tekstikentäksi, joka on huomattavasti vähemmän hyödyllinen loppukäyttäjille.


Tämä kontekstin sitominen on keskeinen osa sitä, miten Odoo-kehys yhdistää kenttä määritelmät käyttöliittymän käyttäytymiseen. Kenttä tietää, mistä mallista se suodattaa, ja käyttöliittymä mukautuu sen mukaan.


Vuorovaikutus muiden tietueiden kanssa

Aluekenttiä käytetään usein rinnakkain suhteellisten kenttien kanssa rajoittamaan, mitkä tietueet näkyvät Many2one avattavassa valikossa, määrittämään, mitkä tietueet automaattinen toiminto kohdistaa, tai asettamaan raportin tai hallintapaneelin laajuus. Alueilmaisu toimii elävänä suodattimena, joka sovelletaan ORM-tasolla, mikä tarkoittaa, että se kunnioittaa Odoon turvallisuus sääntöjä ja kenttä käyttöoikeusvalvontaa.

Liiketoimintakäyttötapaukset


Aluekenttiä esiintyy käytännössä jokaisessa Odoo-moduulissa. Tässä on viisi todellista esimerkkiä, jotka osoittavat, kuinka ne ohjaavat käytännön liiketoimintatyönkulkuja.


1. Automaattiset toiminnot ja sähköpostikutsut

Kun määrität automaattisen toiminnon Odoossa (Asetukset > Tekniset > Automaatio), määrität alueen, joka tarkentaa, mitkä tietueet laukaisevat toiminnon. Esimerkiksi automaattinen sähköposti erääntyneistä laskuista saattaa kohdistaa vain julkaistuihin laskuihin, jotka ovat maksamatta ja eräpäivän ylittäneet. Tämä alue tallennetaan suoraan base.automation malliin aluekentässä nimeltä filter_domain. Toiminto aktivoituu vain tietueille, jotka vastaavat.


2. Tietue säännöt ja käyttöoikeuden hallinta

Odoon turvallisuus tietue säännöt käyttävät aluekenttiä rajoittamaan, mitkä tietueet käyttäjäryhmä voi nähdä tai muokata. Myyntitiimin sääntö saattaa rajoittaa näkyvyyttä tietueisiin, jotka on osoitettu nykyiselle käyttäjätiimille, arvioituna kyselyhetkellä. Tämä antaa sinulle rivikohtaisen turvallisuuden ilman, että sinun tarvitsee kirjoittaa mukautettua koodia. Jokainen suodatin jokaisessa tietue säännössä Odoossa on alueilmaisu, joka on tallennettu aluekenttään.


3. Varaston ja toimintojen suodatus

Varasto- ja inventaariohallinnassa aikataulutetut toimet ja uudelleentilaussäännöt käyttävät alueita kohdistamaan tiettyihin tuotekategorioihin, sijainteihin tai varastotasoihin. Automaattinen uudelleentilaustoiminto voidaan rajata varastoitaviin tuotteisiin, joiden saatavilla oleva määrä on tai alle uudelleentilauspisteen, estäen tarpeettoman käsittelyn tuhansissa tiedoissa.


4. CRM-putki ja liidien kvalifiointi

CRM-moduulissa putkivaiheen automaatio, aktiviteettisäännöt ja liidien jakaminen kaikki perustuvat alueilmaisuun liidien luokittelemiseksi ja kvalifioimiseksi. Mukautetut liidien jakosäännöt käyttävät alueita yhdistämään liidit oikealle myyjälle maan, toimialan tai kauppakoon perusteella. Aluekenttä on se, mikä tekee näistä säännöistä konfiguroitavia käyttöliittymästä sen sijaan, että vaadittaisiin koodimuutoksia jokaista uutta skenaariota varten.


5. Dynaamiset Many2one-pudotusvalikot

Mukautetuissa lomakkeissa alue, joka on sovellettu Many2one-kenttään, hallitsee, mitkä tiedot näkyvät pudotusvalikossa. Toimittajakentän rajaaminen näyttämään vain aktiiviset toimittajat, joilla on ei-nolla toimittajarankki, luo keskittyneempiä käyttäjäkokemuksia ja vähentää syöttövirheitä. Alue voi olla jopa dynaaminen, viitaten arvoihin muista kentistä samalla lomakkeella, jolloin saatavilla olevat vaihtoehdot muuttuvat käyttäjän valintojen perusteella.

Kentän luominen tai mukauttaminen


Odoossa on kaksi pääasiallista lähestymistapaa työskennellä aluekenttien kanssa: käyttää Odoo Studioa ilman koodia mukauttamiseen tai kirjoittaa Pythonia ja XML:ää mukautetussa moduulissa.


Odoo Studion käyttäminen

Odoo Studio ei tällä hetkellä tarjoa erillistä Aluekenttätyyppiä sen visuaalisessa kenttäluojassa. Useimmissa liiketoimintakonfiguraatiotarpeissa et tarvitse sellaista. Automatisoitujen toimintojen, tietueiden sääntöjen ja palvelintoimintojen sisäänrakennetut alueeditorit tarjoavat sinulle visuaalisen alueen rakentajan ilman, että tarvitset mukautettua kenttää.

Jos haluat lisätä alueen suodattimen Many2one-kenttään lomakkeessa, voit tehdä sen Studiolla muokkaamalla kenttäominaisuuksia ja syöttämällä alueilmaisu suoraan. Studio validoi alueen syntaksin ja tallentaa sen näkymä määrittelyyn.


Tekninen mukauttaminen Pythonissa

Mukautetussa Odoo-moduulissa aluekentän lisääminen on suoraviivainen osa standardia odoo kehittäjän opasta. Tässä on perusesimerkki, joka käyttää ORM:ää:

from odoo import models, fields

class MyModel(models.Model):
    _name = 'my.model'

    model_name = fields.Char(default='res.partner')
    filter_domain = fields.Domain(
        string='Suodatinalue',
        model_field='model_name',
        help='Alueilmaisu kumppanitietueiden suodattamiseen'
    )

Attribuutti model_field yhdistää domain-editorin mallin nimeen, joka on tallennettu model_name-kenttään. Tämä kertoo domain-widgetille, mitkä kentät tarjotaan visuaalisessa rakentajassa. Mallin nimen pitäminen erillisessä kentässä mahdollistaa myös dynaamisen mallin valinnan, jos käyttötapasi sitä vaatii.


Widgetin lisääminen lomakenäkymään

Näyttääksesi domain-rakentajan lomakenäkymässä, viittaa sekä mallikenttään että domain-kenttään näkymän XML:ssä:


<field name="model_name" invisible="1"/>
<field name="filter_domain" widget="domain"
       options="{'model': 'model_name'}"/>

Ilman widget="domain"-ilmoitusta ja mallivaihtoehtoa kenttä renderöidään tavallisena tekstinä. Sisällytä aina molemmat, kun rakennat lomakkeita, jotka altistavat domain-konfiguraation käyttäjille.


Domain-arvojen kirjoittaminen XML-RPC API:n kautta

Jos asetat domain-kenttäarvoja ohjelmallisesti API:n kautta, siirrä arvo aina merkkijonona:

models.execute_kw(db, uid, api_key, 'my.model', 'write',
    [[record_id], {
        'filter_domain': "[('active', '=', True)]"
    }]
)

Python-listaobjektin välittäminen merkkijonon sijaan on yleinen virhe, joka aiheuttaa virheitä tai hiljaisia epäonnistumisia Odoo-version mukaan. Sarjoita aina domain merkkijonoksi ennen sen kirjoittamista API:n kautta.

Parhaat käytännöt


Nämä käytännön tavat säästävät aikaasi ja estävät ongelmia työskennellessäsi domain-kenttien kanssa Odoossa.


Vahvista domain-syntaksi ennen käyttöönottoa

Virheellinen domain-lauseke aiheuttaa virheitä heti, kun Odoo yrittää arvioida sitä. Testaa domainisi Odoo-hakupalkissa tai kehittäjätilassa ennen niiden tallentamista automatisoituihin toimintoihin tai tietueiden sääntöihin. Nopea search_count-kutsu API:n kautta on myös luotettava tapa varmistaa, että domain palauttaa odotetun määrän tietueita.


Käytä dynaamisia muuttujia, kun se on mahdollista

Vältä käyttäjä-ID:iden, yritys-ID:iden tai päivämäärien kovakoodamista domain-ilmaisuissa. Käytä sen sijaan dynaamisia muuttujia kuten uid, context_today() ja current_company_id. Tämä pitää domainisi siirrettävinä ja estää hiljaista rikkoutumista, kun tietueet muuttuvat ympäristöjen välillä.


Sitouta aina mallin konteksti

Kun lisäät Domain-kentän mukautettuun malliin, aseta aina model_field-attribuutti ja sisällytä se näkymään. Ilman sitä käyttäjät näkevät tavallisen tekstikentän visuaalisen domain-rakentajan sijaan, mikä vähentää käytettävyyttä ja lisää mahdollisuutta, että virheellisiä arvoja tallennetaan.


Pidä domainit luettavina

Monimutkaiset sisäkkäiset domainit, joissa käytetään | (TAI) ja & (JA) -operaattoreita, voivat olla vaikeita lukea ja ylläpitää. Lisää kommentteja Python-koodiisi selittämään kunkin domainin tarkoitus. Jos domainista tulee hyvin monimutkainen, harkitse, olisiko palvelintoiminto tai laskettu kenttä selkeämpi ja helpompi testata.


Käytä safe_eval:ia ohjelmalliseen arviointiin

Kun arvioit domain-merkkijonoja Python-koodissa, esimerkiksi palvelintoiminnossa tai automatisoidussa toiminnossa, käytä Odoo:n sisäänrakennettua safe_eval:ia Pythonin alkuperäisen eval:n sijaan. Se on turvallisempaa, käsittelee Odoo-spesifisiä kontekstimuuttujia oikein ja on johdonmukaista sen suhteen, miten Odoo arvioi domainit sisäisesti.


Testaa realistisilla tiedoilla

Varmista aina, että domainisi vastaa odotettuja tietueita ennen kuin siirryt live-tilaan. Tämä on erityisen tärkeää automatisoiduissa toiminnoissa ja tietue-säännöissä, joissa virheellinen suodatin voi käsitellä vääriä tietueita tai estää käyttäjä pääsyn ilman näkyvää varoitusta.

Yleiset sudenkuopat


Tässä ovat virheet, jotka ilmenevät useimmiten työskennellessä domain-kenttien kanssa Odoo:ssa, ja miten välttää ne.


Sekoitus kenttätyypin ja domain-syntaksin välillä

Sana "domain" tarkoittaa kahta eri asiaa Odoossa. Se viittaa suodatin syntaksiin (tuplalista), ja se viittaa myös fields.Domain:iin, erityiseen ORM-kenttätyyppiin, joka tallentaa nämä lausekkeet datana. Uudet käyttäjät Odoo mukauttamisessa sekoittavat usein nämä kaksi. Domain-kenttä on tallennusastia. Domain-lauseke on suodatinlogiikka sen sisällä.


Listan välittäminen merkkijonon sijaan API:n kautta

Kun kirjoitat Domain-kenttään XML-RPC:n kautta, sinun on välitettävä merkkijono, ei Python-listaobjektia. Domainin välittäminen raakalistana aiheuttaa tyyppivirheen tai hiljaisen epäonnistumisen Odoo-version mukaan. Sarjoita aina domain merkkijonoksi ennen sen kirjoittamista API:n kautta.


Puuttuva mallikonteksti widgetissä

Jos lisäät Domain-kentän lomakenäkymään ilman, että määrität mallikontekstia widgetin asetuksissa, käyttäjät näkevät tavallisen tekstikentän sen sijaan, että visuaalinen domain-rakentaja näkyisi. Domain-rakentaja ilmestyy vain, kun widget tietää, mihin malliin viitata. Muista aina sisällyttää model_field -linkki näkymäsi määrittelyyn.


Kiinteiden tietueiden ID:iden kovakoodaus domaineissa

Domaineissa, jotka viittaavat suoraan tiettyihin tietueiden ID:ihin, tapahtuu hiljainen rikkoutuminen, kun nämä tietueet poistetaan tai kun kopioit konfiguraation uuteen tietokantaan. Käytä dynaamisia viittauksia, kuten uid tai relaatiohakuja aina kun mahdollista, jotta domaineistasi tulee siirrettäviä.


Liian laajat tai rajoittavat tietosääntöjen domaineja

Tietosääntöjen domain, joka on liian salliva, voi altistaa tietueita käyttäjille, jotka eivät saisi nähdä niitä. Liian rajoittava voi hiljaa piilottaa tietueita ilman mitään selitystä käyttäjälle. Testaa aina tietosääntöjen domaineja kohdekäyttäjäryhmän näkökulmasta, ei admin-tililtä, joka ohittaa kaikki säännöt.


Arkistettujen tietueiden unohtaminen

Odoossa arkistoidut tietueet (joissa active = False) suljetaan oletuksena hakutuloksista. Jos domainisi ei ota tätä huomioon, saatat saada odottamattomia aukkoja tietoihisi. Lisää ('active', 'in', [True, False]), kun tarvitset arkistettujen tietueiden sisällyttämistä suodatin tuloksiin.

Yhteenveto


Domain-kentät ovat yksi niistä rakennuspalikoista, jotka hiljaa tukevat suurta osaa siitä, miten Odoo toimii. Pääsyvalvonnasta ja automatisoiduista toiminnoista dynaamisiin alasvetovalikoihin ja kojelaudan suodattimiin, domain-lausekkeet ovat Odoon tietueiden suodattamisen selkäranka, ja fields.Domain -tyyppi antaa kehittäjille puhtaan, validoidun tavan tallentaa ja esittää tätä logiikkaa suoraan Odoo tietomallissa.


Liiketoimintakäyttäjille alue-widget tekee suodatinmäärityksistä saavutettavia ilman koodia. Kehittäjille Domain-kenttätyyppi tuo selkeyttä mallimäärityksiin, jotka ennen perustuivat yleisiin Char-kenttiin widget-yliuudella. Olitpa sitten työskentelemässä Odoo Studiolla, kirjoittamassa mukautettua Python-moduulia tai määrittämässä automatisoituja työnkulkuja käyttöliittymästä, ymmärtäminen siitä, miten aluekentät toimivat, avaa laajan valikoiman mahdollisuuksia.


Tässä oppaassa käsitellyt käsitteet pätevät kaikissa Odoo-versioissa ja -moduuleissa. Aika, jonka käytät aluekenttien ymmärtämiseen, on hyvin sijoitettu, koska ne ovat todella kaikkialla Odoossa.


Tarvitsetko apua Odoo-toteutuksessasi?

Dasolo auttaa yrityksiä toteuttamaan, mukauttamaan ja optimoimaan Odoo heidän erityisiin liiketoimintatarpeisiinsa. Olitpa sitten määrittämässä automatisoituja työnkulkuja, rakentamassa mukautettuja moduuleja tai yrittämässä saada enemmän irti nykyisestä Odoo-asetuksestasi, tiimillämme on teknistä syvyyttä auttaakseen sinua etenemään luottavaisin mielin.

Jos sinulla on kysymyksiä aluekentistä tai mistä tahansa muusta Odoo-toteutuksesi osa-alueesta, ota meihin yhteyttä. Olemme iloisia voidessamme tarkastella asetustasi ja ohjata sinua oikeaan suuntaan.

Odoon Domain Kentät: Täydellinen Opas
Dasolo 6. maaliskuuta 2026
Jaa tämä kirjoitus
Kirjaudu sisään jättääksesi kommentin