Johdanto
Char-kenttä on Odoon tietomallin perusrakenteita — yksinkertainen tekstiraita, joka esiintyy yrityksen arjessa nimissä, viitenumeroissa ja muistiinpanoissa. Usein et tule ajatelleeksi, että klikkaamasi asiakastieto tai tuotetunnus on juuri tämä kenttätyyppi.
Olitpa muokkaamassa lomakkeita Odoo Studiolla, kehittämässä moduulia tai konsultoimassa asiakkaan järjestelmäarkkitehtuuria, Char-kentän toimintaperiaatteiden ymmärtäminen vähentää yllätyksiä ja virheitä tuotantoon vietäessä.
Pinnalta katsottuna kenttä vaikuttaa yksinkertaiselta, mutta siihen liittyy käytösasetuksia ja teknisiä valintoja — kuten pituusrajoitus, indeksointi ja käännösmahdollisuus — jotka vaikuttavat käytettävyyteen ja tietojen laatuun. Tämä opas käy läpi mitä kenttä tallentaa, miten se näkyy käyttöliittymässä ja miten sitä kannattaa luoda ja ylläpitää eri tilanteissa.
Mikä on Char-kenttä Odoossa
Odoon ORM:ssä Char-kenttä on tarkoitettu lyhyiden tekstimerkkijonojen tallentamiseen. Tietokantatasolla se vastaa joko VARCHAR- tai TEXT-saraketta PostgreSQL:ssä riippuen siitä, asetatko merkkimäärärajoituksen.
Käyttäjän näkökulmasta Char-kenttä näkyy yksirivisenä tekstikenttänä lomakkeissa ja tavallisena tekstinä listanäkymissä. Se sopii nimiin, koodeihin, tunnisteisiin ja muihin yksirivisiin arvoihin, jotka eivät vaadi rivinvaihtoja.
Alla on esimerkki siitä, miten kenttä määritellään Python-mallissa:
from odoo import fields, models
class SaleOrder(models.Model):
_inherit = 'sale.order'
customer_po_reference = fields.Char(
string='Customer PO Reference',
size=64,
index=True,
)
Parametrit selittävät kentän ominaisuuksia: string on lomakkeen otsikko, size rajaa merkkien määrää (valinnainen) ja index luo hakemiston tietokantaan nopeampaa hakuja varten.
Odoo Studiolla sama kenttä näkyy nimellä Text (single line) ja saa automaattisesti etuliitteen x_studio_. Koodilla tai XML-RPC:llä luodessa tekninen nimi valitaan itse.
Miten kenttä toimii
Kun määrittelet Char-kentän moduulissa, Odoo huolehtii tietokantasarakkeen luomisesta asennuksen tai päivityksen yhteydessä — sinun ei tarvitse kirjoittaa SQL-migraatioita käsin.
Tietokannassa Char ilman kokoa tallennetaan TEXT-tyyppisenä, kun taas kokoa määriteltäessä käytetään VARCHAR(n):ää. PostgreSQL käsittelee molempia tehokkaasti, joten ero on pääosin pituuden rajoittamisessa eikä suorituskyvyn kannalta merkittävä.
Tärkeimmät kenttäattribuutit
Seuraavassa ovat Char-kentän keskeiset ominaisuudet Odoo-kehyksessä:
- size: Määrittää suurimman merkkimäärän. Jos jätät pois, tietokantatasolla ei ole pituusrajoitusta.
- translate: Jos asetetaan True, kentän arvo voidaan kääntää kielikohtaisesti. Hyödyllinen monikielisissä ympäristöissä.
- required: Tekee kentästä pakollisen lomakkeessa ja mallitasolla.
- default: Asettaa automaattisen oletusarvon uusille riveille.
- index: Luo tietokantaindeksin nopeampaa suodatusta ja hakua varten.
- compute: Linkittää Python-metodin, joka laskee kentän arvon dynaamisesti, sopii johdettuihin tai yhdistettyihin arvoihin.
- store: Yhdistettynä compute-asetukseen määrittää, tallennetaanko laskettu arvo tietokantaan.
- copy: Määrittää, kopioidaanko kentän arvo rivin duplikaatiossa. Oletus True.
Miten kenttä näkyy näkymissä
Lomakenäkymissä Char-kenttä on tavallinen <input type="text">-elementti; listanäkymissä se näkyy tekstinä. Hakunäkymissä sitä voi suodattaa contains-, equals- ja starts-with-operaattoreilla ilman lisäkonfiguraatiota.
Voit muuttaa esitystapaa widgeteillä: esimerkiksi sähköpostiwidget muuttaa Char-kentästä klikattavan sähköpostilinkin ja url-widget avaa osoitteen uuteen välilehteen.
Rajapinta Odoo ORM:ään
Kehittäjän näkökulmasta Char-kentän lukeminen ja kirjoittaminen tapahtuu kuten muiden kenttien kanssa: arvoa käsitellään suoraan record-objektissa ja kehys huolehtii validoinnista määrittelyn perusteella. Muunnoksia ei yleensä tarvita, mikä tekee kentästä helppokäyttöisen arkisissa sovelluksissa.
Liiketoiminnan käyttötapaukset
Char-kenttä käy läpi lähes jokaisen Odoo-käyttötapauksen. Tässä viisi konkreettista esimerkkiä liiketoimintaprosesseista.
CRM: Asiakkaan sisäinen viitenumero
Yrityksillä on usein omia asiakaskoodijärjestelmiä. Res.partner-malliin lisätty Char-kenttä pitää yllä asiakaskoodeja, jotka ovat haettavissa ja näkyvät myyntitilauksissa ja laskuissa — näin myynti löytää oikean tilin nopeasti myös samannimisten asiakkaiden joukosta.
Myynti: Ostotilausten viitteet
Asiakkaan lähettämä PO-numero pitää tallentaa laskuihin ja lähetysdokumentteihin. Sale.order-mallin client_order_ref on Char-kenttä ja siirtyy laskulle automaattisesti, mikä vähentää viestittelytarvetta asiakkaan kanssa puuttuvista viitteistä.
Varasto: Tuoteviitteet
Product.templatein default_code on Char-kenttä, joka toimii tuotteen sisäisenä viitteenä varastoissa, viivakoodinlukijoissa ja tilauksissa. Kentän yhtenäisyys on usein keskeinen tietolaadun ylläpitotavoite varastonhallinnassa.
Kirjanpito: ALV- ja rekisterinumerot
ALV- ja muut veronumerot sekä rekisteritiedot tallennetaan yleensä partner-korteille Char-kenttänä. Oikein konfiguroituna nämä arvot tulostuvat laskuille ja toimittajien kuiteille, mikä vähentää manuaalista korjaustyötä kansainvälisissä operaatioissa.
Henkilöstöhallinto: Työntekijätunnisteet ja kulkukoodit
HR-tiimit tallentavat usein työntekijöiden tunnisteita, kulkukorttikoodeja tai palkanlaskennan ulkoisia tunnisteita Char-kenttään. Näin Odoo-linkitys muihin järjestelmiin on helppoa ilman täysimittaista integraatiota heti alussa.
Char-kentän luominen ja muokkaaminen
Char-kentän lisäämiseen on useita tapoja riippuen teknisestä ympäristöstäsi ja siitä, haluatko koodata vai käyttää graafista työkalua.
Odoo Studio (No-code)
Odoo Studio on sisäänrakennettu low-code-työkalu. Char-kentän lisääminen ilman koodausta onnistuu näin:
- Avaa Odoo Studio päävalikosta.
- Siirry lomakkeeseen, johon haluat kentän.
- Raahaa sivupalkista single line -Teksti-kenttä lomakkeeseen.
- Aseta kentän otsikko, pakollisuus ja tarvittaessa pituus kenttäasetuksissa.
- Tallenna ja sulje Studio.
Studio luo kentän automaattisesti x_studio_-etuliitteellä ja lisää sen lomakkeeseen. Tietokantamuutoksia ei tarvitse tehdä käsin.
Pythonille mukautetussa moduulissa
Kehittäjille suositeltu tapa on määritellä kenttä Python-mallissa, kun haluat versionhallinnan ja hallitun käyttöönoton useissa ympäristöissä:
from odoo import fields, models
class ResPartner(models.Model):
_inherit = 'res.partner'
x_erp_customer_id = fields.Char(
string='ERP Customer ID',
size=32,
index=True,
copy=False,
)
Kun kenttä on lisätty malliin, lisää se myös näkymään XML:ssä, jotta se näkyy käyttöliittymässä. Odoo luo tietokantasarakkeen moduulin asennuksen tai päivityksen yhteydessä.
XML-RPC-rajapinnan kautta
Ohjelmallisesti hallinnoidessa voit luoda Char-kenttiä XML-RPC-rajapinnan avulla esim. automatisoidussa käyttöönotossa tai etähallinnassa:
field_id = models.execute_kw(
ODOO_DB, uid, ODOO_API_KEY,
'ir.model.fields', 'create',
[{
'name': 'x_custom_reference',
'field_description': 'Custom Reference',
'model_id': model_id,
'ttype': 'char',
'size': 64,
'state': 'manual',
}]
)
Asetus state: 'manual' kertoo, että kenttä on luotu käsin (ei moduulilla), mikä on oikea tapa Studio- tai API-kentille. Monet toimittajat käyttävät tätä mallia automatisoiduissa konfiguraatioskripteissä.
Parhaat käytännöt
1. Määritä koko, kun tunnet maksimipituuden
Jos kenttä tallentaa ISO-maakoodeja, puhelinnumeroita tai kiinteitä tunnisteita, aseta size. Se ilmaisee tarkoituksen mallin lukijalle ja estää vahingossa syötetyt liian pitkät arvot. Kahden merkin maan koodille ei pidä sallia 500 merkkiä.
2. Lisää indeksi usein haettaville kentille
Jos kentän avulla suodatetaan tai haetaan paljon, esimerkiksi asiakaskoodilla tai tilausviitteellä, käytä index=True. Suurissa tauluissa indeksi voi muuttaa haun sekunneista millisekunneiksi.
3. Käytä translate=True monikielisiin arvoihin
Jos järjestelmäsi palvelee eri kieliä ja kentän arvo on käyttäjälle näkyvää tekstiä, ota käännökset käyttöön. Tämä on olennaista esimerkiksi tuotemerkeille, työtehtävänimikkeille ja muille asiakaskeskeisille tiedoille.
4. Anna kentille kuvaavat tekniset nimet
Moduuleissa nimeä kentät kuvaavasti. Nimi kuten x_customer_erp_id on paljon ylläpidettävämpi kuin epämääräinen x_field1. Studio-kentät kannattaa nimetä ennen käyttöönottoa, koska teknistä nimeä on vaikea muuttaa myöhemmin tietojen kanssa.
5. Laske johdetut arvot compute:lla
Char-kenttä voidaan laskea dynaamisesti, esimerkiksi yhdistämällä vuosiluku ja sekvenssi. Kun käytät store=True, arvo tallennetaan tietokantaan ja sitä voi hakujen ja raporttien yhteydessä käyttää ilman jatkuvaa uudelleenlaskentaa.
Yleisiä sudenkuoppia
Ei määritelty maksimipituus avaa oven huonolle datalle
Ilman pituusrajoitusta käyttäjät voivat liittää kenttään pitkiä tekstikappaleita. Tämä aiheuttaa ongelmia, kun arvo tulostuu dokumentteihin tai lähetetään järjestelmiin, joilla on tiukat merkkirajat. Määritä järkevä koko kentille, joilla pituus on merkityksellinen.
Puuttuvat indeksit usein haetuilla kentillä
Ilman indeksiä suodatus isossa taulussa johtaa koko taulun läpikäyntiin. Monet tiimit huomaavat tämän vasta tietokannan kasvaessa merkittävästi. Jos kenttää käytetään säännöllisesti listavalikoiden tai hakupalkin filttereissä, lisää indeksi heti suunnittelussa.
Char-kentän ja Text-kentän sekoittaminen
Char on tarkoitettu lyhyelle yksiriviselle tekstille; Text pitkäkestoiselle moniriviselle sisällölle. Osoitteen, kuvauksen tai muistiinpanon tallentaminen Char-kenttään heikentää käyttökokemusta, koska tekstikenttä ei rivity luonnollisesti. Jos sisältö voi olla useampi lause, käytä Text-kenttää.
Unohtunut translate monikielisissä kentissä
Monikansallisissa yrityksissä translate=False johtaa tilanteeseen, jossa kaikki käyttäjät näkevät saman arvon kaikilla kielillä. Tämä hämmentää dokumentteja ja asiakasviestintää, jossa kentän odotetaan mukautuvan dokumentin kieleen.
Char väärässä tapauksessa: pitäisi olla Selection tai relaatio
Jos kenttä saa aina yhden rajoitetun joukon arvoja (esim. kategoria, tila tai maa), käytä Selection- tai Many2one-kenttää. Tekstikenttä sallii vapaamuotoiset merkkijonot, mikä johtaa kirjoitusvirheisiin ja hajanaisiin arvoihin, ja vaikeuttaa ryhmittelyä ja raportointia.
UKK
Mikä ero Char- ja Text-kentällä on Odoossa?
Char tallentaa lyhyttä yksirivistä tekstiä ja näkyy tekstikenttänä; Text tallentaa pidempää monirivistä sisältöä ja näkyy muokattavana tekstialueena. Käytä Charia nimille ja koodeille, Textiä kuvauksille ja muistiinpanoille.
Voiko Char-kentälle asettaa merkkirajoituksen?
Kyllä. Käytä size-parametria Python-määrittelyssä, esimerkiksi fields.Char(size=64). Studiolla voit asettaa rajan kenttäasetuksissa. Jos rajoitusta ei ole, tietokanta ei pakota pituusrajoitusta.
Miten saan Char-kentän näkyviin hakupalkkiin?
Lisää kenttä mallin <search>-näkymään. Studiolla laita haku päälle kenttäasetuksista. Koodissa lisää <field name="your_char_field"/> hakunäkymään XML:ssä, niin käyttäjät voivat hakea sillä suoraan.
Voiko Char-kenttään tallentaa numeroita?
Teknisesti voi, mutta jos arvoilla tehdään laskennallisia vertailuja tai summauksia, käytä Integer- tai Float-kenttää. Char on hyvä valinta numeroille, joita käsitellään tekstinä, kuten postinumerot, puhelinnumerot, IBANit ja sarjanumerot.
Miten teen lasketun (computed) Char-kentän, joka myös tallentaa arvonsa?
Määrittele kenttä compute='_compute_my_field' ja store=True. Kirjoita laskentametodi ja käytä @api.depends() kertomaan, mitkä kentät laukaisevat uudelleenlaskennan. Tallennettuna arvo on hakujen, filttereiden ja vientien käytettävissä ilman jatkuvaa laskentaa.
Yhteenveto
Char-kenttä on petollisen arkinen: sitä käytetään jatkuvasti ilman, että sitä huomataan, mutta pienet virhearvioinnit ovat helposti kalliita. Oikeilla asetusvalinnoilla ja hyvällä mallinnuksella vältät datarikon ja parannat raportoitavuutta.
Olipa kyse Odoo Studion kautta lisätystä asiakasviitteestä, Python-moduulissa määritellystä kentästä tai API:n kautta luodusta kentästä, tässä oppaassa kuvatut mallit auttavat tekemään oikeat valinnat alusta alkaen.
Hyvin suunniteltu tietomalli oikeilla kenttätyypeillä on yksi onnistuneen Odoo-projektin kulmakivistä. Char-kenttä on pieni mutta tärkeä osa tätä kokonaisuutta — sen hallinta kannattaa tehdä huolella.
Dasololla autamme yrityksiä ottamaan Odoon käyttöön, räätälöimään ja optimoimaan sen eri osastoilla. Autamme tietomallin suunnittelussa, mukautettujen kenttien lisäämisessä ja täydellisten moduulien rakentamisessa tarpeidesi mukaan. Ota yhteyttä meihin ja keskustellaan Odoo-projektistasi.