Siirry sisältöön

Valintakenttä Odoossa: Täydellinen Opas

Kaikki, mitä sinun tarvitsee tietää Odoo-tietomallin Valinta-kentästä, peruskäytöstä tekniseen mukauttamiseen asti
6. maaliskuuta 2026 kirjoittanut
Valintakenttä Odoossa: Täydellinen Opas
Dasolo
| Ei vielä kommentteja

Johdanto


Aina kun käyttäjä valitsee liidiprioriteetin, valitsee maksutavan tai merkitsee tuotteen aktiiviseksi tai arkistoiduksi Odoossa, hän todennäköisesti vuorovaikuttaa valintakentän kanssa. Se on yksi käytännöllisimmistä kenttätyypeistä Odoo-kehyksessä ja yksi tärkeimmistä ymmärtää, jos haluat rakentaa puhtaita, luotettavia tietomalleja.


Toisin kuin vapaatekstikenttä, johon käyttäjät voivat kirjoittaa mitä tahansa, valintakenttä rajoittaa syötteen ennalta määriteltyyn valintalistaan. Tämä rajoitus on koko pointti. Se pitää tietosi johdonmukaisina, tekee suodattamisesta ja raportoinnista tarkempaa ja estää sellaiset kirjoitusvirheet ja vaihtelut, jotka hiljaisesti rikkovat aggregaatioita ja koontinäyttöjä ajan myötä.


Tämä opas kattaa kaiken sen, mitä kenttä tallentaa ja miltä se näyttää käyttöliittymässä, aina sen luomiseen ja mukauttamiseen Odoo Studiolla, Python-moduuleilla tai XML-RPC-rajapinnalla. Löydät myös käytännön esimerkkejä todellisista liiketoimintatyönkuluista ja luettelon yleisistä virheistä, joita kannattaa välttää.

Mikä on valintakenttä Odoossa


Odoo ORM:ssä valintakenttä tallentaa merkkijonon arvon, joka on valittu kiinteästä vaihtoehtoluettelosta. Jokainen vaihtoehto määritellään avain-arvo-parina: avain on se, mikä tallennetaan tietokantaan, ja etiketti on se, mitä käyttäjä näkee käyttöliittymässä.


Esimerkiksi prioriteettikenttä voidaan määritellä seuraavilla vaihtoehdoilla:

priority = fields.Selection([
    ('0', 'Normaali'),
    ('1', 'Matala'),
    ('2', 'Korkea'),
    ('3', 'Erittäin korkea'),
], string='Prioriteetti', default='0')

Tässä esimerkissä '0', '1', '2' ja '3' ovat avaimia, jotka tallennetaan tietokantaan. Etiketit Normaali, Matala, Korkea ja Erittäin korkea ovat ne, mitä käyttäjät näkevät näytöllä. Tämä erottelu on tärkeä, kun on tarpeen muuttaa etikettejä myöhemmin rikkomatta olemassa olevia tietueita.


Käyttöliittymässä valintakenttä näkyy avattavana luettelona lomakekatseluissa. Luettelonäkymissä se näyttää ihmisten luettavan etiketin. Kun käytetään badge-widgettiä, jokainen vaihtoehto renderöidään värikkäänä tarrana, mikä tekee arvon heti näkyväksi tiheissä luettelonäkymissä.


Odoo Studiossa tätä kenttätyyppiä kutsutaan Valinta-kentäksi. Kun se luodaan Studion kautta, se saa x_studio_-etuliitteen. Kun se luodaan koodin tai XML-RPC API:n kautta, valitset teknisen nimen.

Kuinka kenttä toimii


Odoon tietomallissa valintakentät tallennetaan PostgreSQL:ssä VARCHAR-sarakkeena. Tietokanta tallentaa vain avaimen, ei koskaan etikettiä. Tämä on tärkeää pitää mielessä kirjoitettaessa domain-suodattimia tai palvelintoimintoja, koska sinun on käytettävä avainta, ei ihmisten luettavaa arvoa.


Esimerkiksi, jos haluat etsiä kaikki korkean prioriteetin liidit, domainisi olisi [('priority', '=', '2')], ei [('priority', '=', 'Korkea')].

Avaimen kenttäattribuutit

Tässä ovat tärkeimmät ominaisuudet valintakentästä Odoo-kehyksessä:

  • selection: Lista (avain, etiketti) -tuplaista, jotka määrittelevät saatavilla olevat vaihtoehdot. Tämä voi olla myös metodin nimi (merkkijono), joka palauttaa listan dynaamisesti.
  • default: Avain vaihtoehdolle, jota käytetään, kun arvoa ei ole vielä asetettu. Jos se jätetään pois, kenttä alkaa tyhjänä.
  • required: Pakottaa käyttäjän valitsemaan vaihtoehdon ennen tallentamista. Yhdistettynä oletusarvoon tämä on yleinen malli tilakentille.
  • selection_add: Käytetään moduulin perinnössä lisätäksesi uusia vaihtoehtoja olemassa olevaan Valinta-kenttään ilman, että koko luetteloa määritellään uudelleen. Tämä on oikea lähestymistapa, kun laajennetaan alkuperäistä kenttää.
  • ondelete: Toimii yhdessä selection_add:n kanssa määrittämään, mitä tapahtuu poistettujen vaihtoehtojen rekistereille, kun moduuli, joka lisäsi sen, poistetaan.

Staattiset vs Dynaamiset Valintalistat

Oletusarvoisesti vaihtoehtojen lista määritellään staattisesti kentän ilmoituksessa. Mutta voit myös välittää menetelmän nimen merkkijonona selection-parametriin. Odoo kutsuu tätä menetelmää ajonaikaisesti rakentaakseen listan, mikä mahdollistaa erilaisten vaihtoehtojen näyttämisen nykyisestä käyttäjästä, nykyisestä yrityksestä tai muusta kontekstista riippuen.


contract_type = fields.Selection(
    selection='_get_contract_types',
    string='Sopimustyyppi'
)

def _get_contract_types(self):
    if self.env.user.has_group('hr.group_hr_manager'):
        return [('permanent', 'Pysyvä'), ('fixed', 'Määräaikainen'), ('interim', 'Väliaikainen')]
    return [('permanent', 'Pysyvä'), ('fixed', 'Määräaikainen')]

Miten se Näkyy Näkymissä

Lomakenäkymässä Valinta-kenttä renderöidään standardina avattavana valikkona. Voit myös käyttää widget="badge"-attribuuttia renderöidäksesi sen värillisenä tarrana, mikä toimii hyvin luettelo- ja kanban-näkymissä tilakentille. widget="radio"-attribuutti renderöi vaihtoehdot inline-radiopainikkeina, mikä sopii kentille, joissa on pieni määrä valintoja ja haluat kaikkien vaihtoehtojen olevan näkyvissä kerralla.


Vuorovaikutus Odoo ORM:n Kanssa

Valinta-kenttien lukeminen ja kirjoittaminen Odoo ORM:ssä toimii suoraviivaisesti. Määrität avaimen suoraan, ja kehys hoitaa näyttömäppäyksen automaattisesti. Kun luet rekisteriä XML-RPC API:n kautta fields_get:n avulla, kentän selection-attribuutti sisältää koko [avain, etiketti]-parien luettelon, jota voit käyttää oman näyttölogiikan rakentamiseen ulkoisissa työkaluissa.


Liiketoimintakäyttötapaukset


Valinta-kenttä esiintyy käytännössä jokaisessa moduulissa standardissa Odoo-implementaatiossa. Tässä on viisi konkreettista esimerkkiä yleisistä liiketoimintatyönkuluista.


CRM: Liidien Prioriteetti ja Putkivaiheen Tyyppi

Prioriteettikenttä CRM-liideissä on alkuperäinen Valinta-kenttä, jossa on neljä tasoa: Normaali, Matala, Korkea ja Erittäin Korkea. Myyntitiimit käyttävät sitä keskittyäkseen lupaavimpiin mahdollisuuksiin. Se syöttää suoraan Kanban-näkymän väri koodaukseen ja sitä voidaan käyttää automatisoiduissa toiminnoissa seuraamistehtävien käynnistämiseksi, kun liidi nostetaan. Oikean prioriteettijakauman saaminen on yksi ensimmäisistä tietolaatuparannuksista, joita useimmat CRM-tiimit tekevät käyttöönoton jälkeen.


Myynnit: Maksuehto ja Laskutuspolitiikka

Tuotteiden invoice_policy-kenttä on valintakenttä, joka määrittää, perustuuko laskutus tilattuihin määriin vai toimitettuihin määriin. Tämä yksi kenttä määrittää koko laskutusprosessin tuotteen osalta. Samoin tilaus-sopimusten laskutusmoodi käyttää valintakenttää erottamaan ennakkomaksulliset ja jälkikäteen maksettavat laskutusjaksot. Nämä ovat hyviä esimerkkejä valintakentistä, joilla on merkittäviä alavirran vaikutuksia talousprosesseihin.


Varasto: Tuotteen ja Erän Laatuvaltio

Valmistus- ja laadunvalvontaprosesseissa käytetään valintakenttiä erien, sarjanumeroiden ja korjaustilausten tilan seuraamiseen. Esimerkiksi korjaustilausten tila -kenttä kulkee arvojen kuten luonnos, vahvistettu, korjattavana, valmis ja tehty läpi. Jokainen siirtymä voi laukaista automatisoituja sähköposteja, varastosiirtoja tai kirjanpitoentryjä. Valintakenttä toimii hallintapisteenä, jonka ympärille koko prosessi on rakennettu.


Kirjanpito: Maksutapa ja Lehden Tyyppi

Odoo Kirjanpidon lehden tyyppi -kenttä on valintakenttä, joka erottaa myyntilehdet, ostolehdet, käteiselehdet ja pankkilehdet. Odoo käyttää tätä arvoa soveltaakseen oikeaa kirjauslogiikkaa, määrittääkseen, mitkä tilit ovat käytettävissä, ja rajoittaakseen tiettyjä toimintoja oikeille lehden tyypeille. Tämä on hyvä esimerkki valintakentästä, joka hallitsee liiketoimintasääntöjä eikä vain merkitse tietuetta.


HR: Työsuhteen Tyyppi ja Sopimuksen Tila

HR-tiimit käyttävät valintakenttiä työsuhdetyyppien, sopimustilojen ja lomapyyntöjen tilojen seuraamiseen. Esimerkiksi sopimustila siirtyy uudesta avoimeen, vanhentuneeseen tai peruutettuun. Automatisoinnit voivat ilmoittaa HR-päällikölle kuukautta ennen sopimuksen vanhentumista, laukaista perehdytysluetteloita, kun uusi työntekijä aloittaa, ja päivittää palkkasääntöjä työsuhdetyypin mukaan. Valintakenttä pitää sisällään tilan, joka ohjaa koko tätä logiikkaa.

Valintakentän luominen tai mukauttaminen


Odoo-malliin voidaan lisätä valintakenttä kolmella pääasiallisella tavalla, riippuen asetuksistasi ja siitä, tarvitsetko muutoksen versionhallinnan tai ohjelmallisesti.


Käyttämällä Odoo Studioa (Ei Koodia)

Odoo Studio on sisäänrakennettu matalan koodin työkalu kenttien lisäämiseksi ilman Pythonin kirjoittamista. Lisätäksesi valintakentän Studioon:

  1. Avaa Odoo Studio päävalikosta.
  2. Siirry lomakkeeseen, johon haluat kentän.
  3. Vedä Valinta kenttä sivupalkista lomakkeeseen.
  4. Lisää vaihtoehtosi kentän ominaisuuksien paneeliin, syöttäen jokaiselle valinnalle etiketti.
  5. Valinnaisesti aseta oletusarvo ja merkitse kenttä pakolliseksi.
  6. Tallenna ja sulje Studio.

Studio tallentaa jokaisen vaihtoehdon automaattisesti luodulla avaimella ja antamallasi etiketillä. Kenttä saa x_studio_ etuliitteen ja se lisätään lomakekatseluun automaattisesti. Tämä on nopein tapa lisätä Valinta-kenttä liiketoiminta-analyysitilanteessa asiakkaan kanssa.


Pythonin käyttäminen mukautetussa moduulissa

Odoo-moduuleja kehittävien kehittäjien on määritettävä Valinta-kentät Python-mallifileissä. Tämä on suositeltu lähestymistapa mukautuksille, jotka tarvitsevat versionhallintaa ja käyttöönottoa useissa ympäristöissä:

from odoo import fields, models

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

    x_delivery_slot = fields.Selection([
        ('morning', 'Aamu (8h - 12h)'),
        ('afternoon', 'Iltapäivä (13h - 17h)'),
        ('evening', 'Ilta (18h - 20h)'),
    ], string='Toimitusaika', default='morning')

Kun olet määrittänyt kentän, lisää se asiaankuuluvaan näkymän XML-tiedostoon, jotta se näkyy käyttöliittymässä. Odoo hoitaa tietokantapalstan luomisen, kun asennat tai päivität moduulin.


Kun laajennat alkuperäistä kenttää uusilla vaihtoehdoilla, käytä selection_add -komentoa sen sijaan, että määrittäisit kentän uudelleen:

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

    state = fields.Selection(
        selection_add=[('custom_approval', 'Odottaa hyväksyntää')],
        ondelete={'custom_approval': 'aseta oletus'}
    )

XML-RPC API:n käyttö

Jos hallitset Odoo-mukautuksia ohjelmallisesti, esimerkiksi osana käyttöönotto-putkea tai etäkonfigurointivihkoa, voit luoda Valinta-kenttiä XML-RPC API:n kautta:

field_id = models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'ir.model.fields', 'create',
    [{
        'name': 'x_contract_category',
        'field_description': 'Sopimuskategoria',
        'model_id': model_id,
        'ttype': 'selection',
        'selection': "[('standard', 'Standard'), ('premium', 'Premium'), ('custom', 'Mukautettu')]",
        'state': 'manual',
    }]
)

Huomaa, että kun luot Valinta-kentän API:n kautta, selection-arvo annetaan merkkijonona Python-listan esityksenä. state: manual-arvo kertoo Odoole, että tämä kenttä on luotu manuaalisesti, mikä on oikea asetus Studio- tai API-kautta luoduille kentille. Näin Dasolo käsittelee etäkenttien luomista asiakkaille osana automatisoituja konfigurointiskriptejä.


Parhaat käytännöt


1. Käytä merkityksellisiä ja vakaita avaimia

Avain on se, joka tallennetaan tietokantaan ja jota käytetään domain-suodattimissa, automatisoiduissa toiminnoissa ja palvelinpuolen logiikassa. Valitse avain, joka kuvaa vaihtoehtoa selkeästi ja jota et tarvitse myöhemmin muuttamaan. Lyhyet pienet merkkijonot toimivat hyvin: 'draft', 'confirmed', 'cancelled'. Vältä numeerisia avaimia, ellei järjestyksellä ole oikeasti merkitystä, koska ne tekevät koodistasi vaikeammin luettavaa ja ymmärrettävää kuukausia myöhemmin.


2. Pidä lista lyhyenä ja kattavana

Valinta-kenttä, jossa on yli kahdeksan tai kymmenen vaihtoehtoa, on yleensä merkki siitä, että kenttä yrittää tehdä liikaa. Jos lista kasvaa jatkuvasti, harkitse, olisiko Many2one-suhde konfigurointimalliin sopivampi. Tämä antaa käyttäjille mahdollisuuden hallita vaihtoehtoja itse käyttöliittymän kautta ilman, että kehittäjän tarvitsee päivittää koodia tai tietokentän määrittelyä.


3. Aseta aina oletusarvo pakollisille kentille

Jos Valinta-kenttä on pakollinen, aseta myös järkevä oletusarvo. Tämä estää validointivirheitä, kun tietueita luodaan ohjelmallisesti, tuonnin kautta tai API:n kautta, jolloin käyttäjä ei ole läsnä tekemässä valintaa. Oletusarvon tulisi edustaa yleisintä tai vähiten sitoutunutta tilaa työnkulussa.


4. Käytä selection_add:ia laajentaessasi alkuperäisiä kenttiä

Jos sinun tarvitsee lisätä vaihtoehtoja olemassa olevaan Odoo-kenttään mukautetussa moduulissa, käytä selection_add:ia sen sijaan, että määrittäisit koko kentän uudelleen. Tämä on turvallisempaa ja yhteensopivampaa muiden moduulien kanssa, jotka saattavat myös laajentaa samaa kenttää. Parita se aina ondelete-parametrin kanssa käsitelläksesi, mitä tapahtuu, kun moduulisi poistetaan.


5. Käytä merkkiwidgettiä näkyvyyden parantamiseksi luettelonäkymissä

Luettelo- ja kanban-näkymissä Valinta-kentän oletusrenderöinti on vain tekstiä. Lisäämällä widget="badge" -attribuutin näkymän XML:ään jokainen arvo muuttuu värilliseksi tarraksi, mikä tekee kentästä paljon helpommin skannattavan yhdellä silmäyksellä. Tämä on erityisen hyödyllistä tilakentille, joissa käyttäjien on nopeasti tunnistettava huomiota vaativat tiedot.


Yleiset sudenkuopat


Avaimen muuttaminen rikkoo olemassa olevat tiedot

Valinta-option etikettiä voidaan muuttaa turvallisesti milloin tahansa, koska vain avain tallennetaan tietokantaan. Avaimen ei kuitenkaan koskaan pitäisi muuttua, kun tietueita on olemassa kyseisellä arvolla. Jos nimeät avaimen uudelleen, kaikki olemassa olevat tiedot vanhalla avaimella näyttävät tyhjää tai virheellistä arvoa käyttöliittymässä, ja kaikki vanhaa avainta käyttävät aluefiltterit tai automaatiot lakkaavat toimimasta hiljaa. Jos avainta todella on tarpeen muuttaa, sinun on suoritettava tietomigraatiokirjoitus päivittääksesi kaikki olemassa olevat tiedot ensin.


Vaihtoehdon poistaminen jättää orpoja tietueita

Jos poistat vaihtoehdon luettelosta, kun tiedot edelleen pitävät sitä avainta, nämä tiedot näyttävät puuttuvan tai rikkoutuneen arvon. Ennen kuin poistat minkään vaihtoehdon, etsi tiedot, jotka edelleen käyttävät sitä, ja joko päivitä ne voimassa olevaan arvoon tai arkistoi ne. Tämä on yleinen ongelma tietojen puhdistusprojekteissa, kun vaihtoehtoluettelo on suunniteltu ilman riittävää analyysiä etukäteen.


Käytä etikettiä avaimen sijasta aluefilttereissä

Erittäin yleinen virhe, erityisesti vähemmän teknisille käyttäjille, jotka kirjoittavat automaatiosääntöjä Odoo-käyttöliittymässä, on suodattaa ihmisten luettavissa oleva etiketti sen sijaan, että käytettäisiin tallennettua avainta. Tämä tuottaa alueen, joka palauttaa nolla tulosta ilman virheilmoitusta, mikä voi olla vaikeaa diagnosoida. Tarkista aina kentän määritelmä varmistaaksesi, mikä avain vastaa mitä etikettiä ennen suodattimen kirjoittamista.


Valinta-kentän käyttäminen, kun Many2one on sopivampi

Jos vaihtoehtoluettelo muuttuu usein, jos käyttäjien on hallittava sitä itse ilman kehittäjän osallistumista, tai jos vaihtoehdoilla on lisäattribuutteja, kuten väri, järjestys tai linkitetty tili, niin Many2one-suhde konfiguraatiomalliin on parempi valinta. Valinta-kentät ovat ihanteellisia vakaille, kehittäjän hallitsemille luetteloille. Kaikessa dynaamisemmassa Many2one on pitkäaikaisemmin ylläpidettävä.


Tyhjää arvoa ei käsitellä palvelinpuolen logiikassa

Valinta-kenttä, jota ei vaadita, voi pitää False arvoa, kun mitään vaihtoehtoa ei ole valittu. Jos Python-koodisi tai automaattinen toiminto vertaa kenttäarvoa merkkijonoon tarkistamatta ensin False:a, saat odottamattomia käyttäytymisiä tai virheitä. Käsittele aina tyhjää tapausta erikseen palvelintoiminnoissa ja lasketuissa kentissä, jotka riippuvat Valinta-kentästä.

Yhteenveto


Valintakenttä on yksi niistä kenttätyypeistä, joka näyttää yksinkertaiselta, mutta sillä on todellista syvyyttä, kun ymmärrät, miten se toimii taustalla. Avain ja etiketti -erojen tunteminen, ymmärtäminen, milloin käyttää selection_add -komentoa verrattuna kentän määrittämiseen uudelleen, ja tunnistaminen, milloin Many2one palvelisi sinua paremmin, ovat erottavia tekijöitä hyvin suunnitellun Odoo-implementoinnin ja sellaisen välillä, joka aiheuttaa ongelmia vuoden kuluttua.


Olitpa sitten lisäämässä sopimustyyppiä Odoo Studiolla, määrittämässä toimitusaikakenttää mukautetussa Python-moduulissa tai luomassa laatutilakenttää API:n kautta, tässä oppaassa kuvattuja malleja seuraamalla saat tarvitsemasi tiedot oikean päätöksen tekemiseen käyttötapauksessasi.

Odoon tietomallissa valintakenttä on yksi ensisijaisista työkaluista tietojen laadun valvomiseksi lähteessä. Hyvin käytettynä se pitää tietosi puhtaina, raporttisi tarkkoina ja automaatiot luotettavina.

Dasololla autamme yrityksiä toteuttamaan, mukauttamaan ja optimoimaan Odoo:ta kaikilla osastoilla. Olitpa sitten suunnittelemassa puhdasta tietomallia, lisäämässä mukautettuja kenttiä työnkulkuusi tai rakentamassa täyttä Odoo-moduulia alusta alkaen, tiimimme on täällä auttamassa. Ota meihin yhteyttä ja keskustellaan Odoo-projektistasi.

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