Innledning
Boolean‑feltet er blant de mest grunnleggende byggesteinene i Odoo, samtidig som det er et av de mest brukte. Når du krysser av en boks på en salgsordre, merker en kunde som aktiv eller setter et produkt som favoritt, jobber du med et Boolean‑felt.
Selv om det virker enkelt, har Boolean‑feltet noen praktiske egenskaper som det lønner seg å kjenne til. Å vite når det er riktig valg, hvordan man konfigurerer det, og hvilke begrensninger det har, gir ryddigere datamodeller og færre overraskelser i driften.
Denne guiden går gjennom Boolean‑feltet fra flere vinkler: hvilken type verdi det lagrer, hvordan det opptrer i databasen og grensesnittet, hvordan du oppretter eller endrer det via Studio eller kode, konkrete bruksområder i virksomheten og nyttige tips for å utnytte feltet best mulig.
Hva er en Boolean‑felt i Odoo
I Odoos ORM holder et Boolean‑felt én av to verdier: True eller False. På databasenivå blir det matchet mot en BOOLEAN‑kolonne i PostgreSQL, så det finnes ingen «usikker» mellomting — feltet er enten aktivert eller deaktivert.
For brukeren vises et Boolean‑felt vanligvis som en avkrysningsboks i skjemaer. I listevisninger vises som regel et hakeikon når verdien er True, og ingenting når den er False. Avhengig av widget kan den også vises som en bryter for valg som føles mer som en innstilling.
Slik defineres et Boolean‑felt i en Python‑modul i Odoo:
from odoo import fields, models
class SaleOrder(models.Model):
_inherit = 'sale.order'
needs_manual_review = fields.Boolean(
string='Needs Manual Review',
default=False,
)
Parametrene påvirker hvordan feltet opptrer i brukergrensesnittet og ved opprettelse: string styrer etiketten som vises, og default angir startverdien for nye poster. Selv om Odoo defaulter til False, er det god praksis å sette det eksplisitt for lesbarhet og forutsigbarhet.
I Odoo Studio heter samme felttype enkelt og greit Checkbox. Feltene som opprettes der får tekniske navn med prefikset x_studio_, mens du i kode selv bestemmer det tekniske navnet.
Slik fungerer feltet
Når du legger til et Boolean‑felt i en modell, oppretter Odoo kolonnen i PostgreSQL automatisk ved installasjon eller oppgradering av modulen — du trenger normalt ingen manuell SQL‑migrasjon.
En viktig forskjell: Boolean‑feltet returnerer aldri None eller NULL i Odoo‑laget. ORM-en gir alltid True eller False når du leser feltet, selv om databasen skulle ha tomt innhold. Det skiller seg fra noen andre felttyper hvor tomme verdier kan være None/False eller en tom streng.
Nøkkelattributter for feltet
Her er de viktigste egenskapene du kan sette på et Boolean‑felt i Odoo:
- default: Bestemmer verdien ved opprettelse av nye poster. De fleste ganger settes dette til False, men for noen opt‑out‑scenarioer kan True være fornuftig.
- compute: Kobler feltet til en Python‑metode som beregner verdien dynamisk — nyttig for avledede indikatorer basert på andre felt.
- store: Brukes sammen med compute for å lagre beregnet verdi i databasen. Med store=True kan feltet brukes i søk og rapporter uten å regnes på nytt hver gang.
- readonly: Forhindrer at brukere endrer feltet manuelt i grensesnittet — vanlig for felt som kun skal settes av systemet.
- copy: Styrer om verdien kopieres ved duplikering av en post. Standard er True; for godkjenningsflag som ikke skal følge med til kopier bør du sette copy=False.
- groups: Begrenser hvem som kan se eller endre feltet basert på brukergrupper.
Visning i skjermbilder
I skjemaer vises Boolean som en tradisjonell HTML‑checkbox. I lister får du rask visuell oversikt siden True gjerne vises med et hakeikon — nyttig for å skanne mange poster raskt.
Du kan endre hvordan feltet vises med widgets. toggle gir en bryter‑følelse, egnet for innstillinger, mens boolean_favorite viser en stjerne‑ikon for favoritflagg, slik du ser i standard Odoo‑visninger for produkter og kontakter.
Bruk i domener og filtre
Boolean‑felt er enkle å bruke i Odoo‑domener — uttrykkene som styrer søk, automatiske handlinger og tilgangsregler. Et filter for poster som trenger gjennomgang kan være slik:
[('needs_manual_review', '=', True)]
Siden det bare finnes to tilstander, er filteruttrykkene klare og uforvirrende:
[('needs_manual_review', '=', False)]
Denne enkelheten gjør Boolean‑felt nyttige i automatiseringer, serveractions og planlagte oppgaver — de gir et tydelig kriterium uten kompliserte sammenligninger.
Samspill med Odoo‑ORMen
Å lese og skrive Boolean‑felt i kode er rett frem: du får feltverdien fra record‑objektet, sammenligner med True/False og tildeler direkte. ORM håndterer konverteringer og API‑overføringer uten overraskelser, inkludert XML‑RPC‑mappingen for booleans.
Praktiske forretningsscenarier
Eksempler fra virkeligheten
CRM: Marker om en lead er kvalifisert
Salgsteamet kan trenge et raskt signal for hvilke leads som er gjennomgått og vurdert som reelle muligheter. Et felt som is_qualified på crm.lead gjør det mulig å filtrere og prioritere pipeline‑arbeid uten å bygge en ekstra salgsfase.
Salg: Flagge ordre for manuell gjennomgang
For ordre som krever ekstra kontroll — for eksempel store beløp eller nye kunder — gir et needs_manual_review‑felt et tydelig køsystem for økonomi eller drift. Automatiske regler kan sette flagget, og teamet filtrerer raskt fram hva som trenger oppfølging.
Lager: Markere produkter som uttatte
Når et produkt ikke lenger skal selges men må bevares for historikk, kan et is_discontinued‑felt være riktig løsning. Det gjør det enkelt for innkjøp og salg å unngå bestilling eller synlighet i nettbutikk uten å arkivere varen helt.
Regnskap: Identifisere fakturaer som trenger oppfølging
I finans kan et under_dispute‑felt brukes for fakturaer som er omstridt eller venter på kreditnota. Det gir strukturert filtrering og gjør det mulig å stanse purring eller automatiske varsler mens saken undersøkes.
HR: Følge opplæring og sertifiseringer
HR bruker ofte enkle ja/nei‑felt for å dokumentere obligatorisk kurs eller sertifikater, for eksempel safety_training_completed. Det gir ledere en rask oversikt og kan eksporteres til samsvarsrapporter uten å bygge et eget modulkompleks.
Opprette eller tilpasse Boolean‑feltet
Tre måter å opprette Boolean‑felt på
Bruke Odoo Studio (uten kode)
Studio er Odoos innebygde verktøy for å legge til felt uten å skrive Python. Fremgangsmåte:
- Åpne Odoo Studio fra hovedmenyen (krever Studio‑appen).
- Gå til skjemaet der feltet skal vises.
- Dra en Checkbox fra sidemenyen inn på skjemaet.
- Angi etikett, standardverdi og eventuelle readonly/required‑innstillinger i feltets egenskaper.
- Lagre og lukk Studio.
Studio tar seg av databaseopprettelse og legger feltet til i visningen med et x_studio_-prefiks. Ingen restarte eller moduloppgradering er nødvendig i de fleste tilfeller.
Bruke Python i en egen modul
For utviklere som ønsker versjonskontroll og distribuerbare endringer, defineres felt i Python‑modeller. Dette er anbefalt for produksjonsklar funksjonalitet:
from odoo import fields, models
class ResPartner(models.Model):
_inherit = 'res.partner'
x_is_key_account = fields.Boolean(
string='Key Account',
default=False,
copy=False,
)
Etter at feltet er lagt til i modellen, legger du det inn i passende view‑XML så brukerne får tilgang til det. Odoo oppretter databasetabellkolonnen ved installasjon eller oppgradering av modulen.
For beregnede Boolean‑felt ser mønsteret slik ut:
from odoo import api, fields, models
class SaleOrder(models.Model):
_inherit = 'sale.order'
is_high_value = fields.Boolean(
string='High Value Order',
compute='_compute_is_high_value',
store=True,
)
@api.depends('amount_total')
def _compute_is_high_value(self):
for order in self:
order.is_high_value = order.amount_total >= 10000
Med store=True lagres den beregnede verdien i databasen, slik at feltet kan brukes i søk og gruppering uten at det må regnes ut hver gang.
Bruke XML‑RPC‑API
Dersom du setter opp felter programmatisk — for eksempel i et automatisert deploy‑skript — kan Boolean‑felter opprettes gjennom ir.model.fields via XML‑RPC:
field_id = models.execute_kw(
ODOO_DB, uid, ODOO_API_KEY,
'ir.model.fields', 'create',
[{
'name': 'x_needs_manual_review',
'field_description': 'Needs Manual Review',
'model_id': model_id,
'ttype': 'boolean',
'state': 'manual',
}]
)
State='manual' indikerer at feltet er opprettet utenfor en modul (for eksempel via Studio eller API). Dette er riktig innstilling for felter som legges til som del av fjernkonfigurasjon eller kundespesifikke tilpasninger.
Anbefalte fremgangsmåter
Beste praksis — oppsummering
Alltid angi en default‑verdi: Selv om Odoo vil returnere False ved fravær av verdi, er det god kodehygiene å sette default=False eksplisitt for klarhet og forutsigbarhet.
Gi feltnavn som leser som spørsmål: Navn som is_verified, needs_approval eller has_warranty forteller umiddelbart hva som testes. Unngå vage navn som flag eller status som ikke forklarer hensikten.
Sett copy=False for godkjennings‑ og statusflagg: Hvis et flagg ikke skal følge med ved duplisering (for eksempel is_approved), bruk copy=False slik at kopier starter uten ferdigstilt‑markering.
Bruk beregnede Boolean‑felt for avledede tilstander: I stedet for å skrive serveractions som oppdaterer felt manuelt, definer compute‑felt med @api.depends() — det samler logikken på ett sted og reduserer risikoen for inkonsistens.
If your Boolean field represents a state that should not carry over when a record is duplicated, for example "is approved" or "has been sent", always add copy=False. Otherwise, duplicating a record will copy the flag value, which can lead to records appearing approved or sent when they have not been through the proper process.
Vanlige feil å unngå
Bruke Boolean for tilstander med flere alternativer: Det vanligste problemet er å forsøke å modellere tre‑ eller flerstatslogikk med booleans. Velg heller et Selection‑felt eller en statemaskin for status som kan være pending/approved/rejected.
Glemme copy=False på godkjenningsflagg: Standard kopioppførsel fører til at godkjente poster kopieres som godkjente. Husk copy=False når du vil at duplikater skal begynne uten tidligere status.
Ikke legge feltet i søkefanen: Hvis feltet er ment å være et vanlig filter men ikke finnes i søkevisningen, tvinger det medarbeidere til avansert søk og sløsing med tid.
Vanlige fallgruver
Bygge eget synlighetsflag i stedet for å bruke active: Odoo har allerede et innebygd active‑felt for å skjule/arkivere poster. Bruk dette når hensikten er å fjerne poster fra standardvisninger i stedet for å lage et eget visibility‑felt.
Beregnet Boolean uten store=True og forsøke å filtrere: Ikke‑lagrede beregnede felt finnes kun i minnet og kan ikke brukes i SQL‑søk. Hvis feltet skal være søkbart eller grupperbart, må du bruke store=True.
Oppsummering
Boolean‑feltet er en av de små tingene du slutter å tenke på når det er riktig brukt — det gjør jobben og forsvinner i bakgrunnen. Det finnes i kjernen av Odoo‑modeller, fra active‑flagget til publiserings‑og favorittmarkører, og i utallige tilpasninger kunder legger til.
Riktig forståelse av hvordan feltet oppfører seg i datamodellen, å sette gode defaults og velge riktige attributter — samt vite når du heller bør bruke et annet felttype som Selection — gir et renere og mer vedlikeholdbart system.
Et velimplementert Boolean‑felt er usynlig for sluttbrukeren: det fungerer sømløst. Feilbruk derimot skaper forvirring, feilaktige status og en voksende samling av nødløsninger. Forskjellen ligger i å følge reglene og være konsekvent.
Om oss
Hos Dasolo hjelper vi bedrifter med å implementere, tilpasse og forbedre Odoo på tvers av avdelinger. Enten du trenger bistand med datamodellering, å legge til tilpassede felter eller å utvikle komplette moduler, tilbyr vi faglig støtte og gjennomføringsevne.
Ta kontakt
og la oss snakke om ditt Odoo‑prosjekt.
Avslutning
Boolean-feltet er en sånn komponent du knapt merker — nettopp fordi det gjør jobben sin uten bråk. I Odoo dukker det opp overalt: fra active-flagget som styrer hvilke poster som vises, til is_published som bestemmer hva som vises på nettstedet, og videre til de mange skreddersydde avkrysningsboksene bedrifter legger til i sine arbeidsflyter.
Å kjenne hvordan Boolean oppfører seg i Odoo sin datamodell, hvordan du setter riktige standardverdier og attributter, og når du bør velge Boolean fremfor andre felttyper som Selection, gjør at løsningene dine blir ryddige, forutsigbare og enklere å vedlikeholde.
Et godt implementert Boolean-felt skal være usynlig for brukeren — det bare fungerer. Feil bruk av slike felt skaper derimot uklarhet, inkonsistente tilstander og et økende behov for midlertidige løsninger. Forskjellen ligger i å følge reglene og bruke dem konsekvent.
Hos Dasolo bistår vi bedrifter med implementasjon, tilpasning og optimalisering av Odoo på tvers av avdelinger. Enten dere trenger hjelp til å utforme en ryddig datamodell, legge til egne felt i arbeidsflytene eller bygge et komplett Odoo-modul fra bunnen av, har teamet vårt erfaringen som trengs. Ta kontakt med oss så tar vi en prat om ditt Odoo-prosjekt.