Skip to Content

Boolean-felt i Odoo: Den komplette guide

Alt, du skal vide om boolske felter i Odoo: fra afkrydsningsfeltets opførsel til avanceret tilpasning
6. marts 2026 af
Boolean-felt i Odoo: Den komplette guide
Dasolo
| Ingen kommentarer endnu

Introduktion


Boolean‑feltet er blandt de mest fundamentale byggesten i Odoo. Hver gang du sætter flueben i en ordre, markerer en kunde som aktiv eller sætter et produkt som favorit, ændrer du egentlig bare et enkelt ja/nej‑felt i databasen.


Selvom konceptet er enkelt — et binært valg — har Boolean‑felter nogle specifikke egenskaber, der er værd at kende. De rigtige valg omkring navngivning, standardværdier og hvornår man bør bruge andre felttyper, gør systemet både enklere at vedligeholde og mindre tilbøjeligt til fejl.


Denne guide gennemgår Boolean‑feltet fra alle relevante vinkler: hvad det gemmer, hvordan det opfører sig i ORM og visninger, hvordan du tilføjer eller tilpasser det via Studio, Python eller API, praktiske eksempler fra forretningen og konkrete tips til at bruge det korrekt.

Hvad er en Boolean‑felt i Odoo


I Odoos ORM er et Boolean‑felt binært: det kan kun være True eller False. I databasen svarer det til en BOOLEAN‑kolonne i PostgreSQL — der findes ikke noget mellemstadie, så værdien er enten aktiv eller ikke‑aktiv.


I brugerfladen vises Boolean‑felter typisk som en checkbox i formularer. I lister vises et markeret ikon for True og intet for False. Afhængigt af widget kan det dog også vises som en on/off‑switch eller et ikon som stjerne for favoritter.


Et felt i en Python‑model defineres direkte i modelklassen med Odoos fields‑API:

from odoo import fields, models

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

    needs_manual_review = fields.Boolean(
        string='Needs Manual Review',
        default=False,
    )

Parameteren til label styrer teksten i UI, og default angiver startværdien for nye poster. Selv om Odoo implicit behandler manglende værdi som False, er det god stil at sætte default eksplicit for at gøre hensigten klar i kildekoden.

I Odoo Studio hedder feltet simpelt ‘Checkbox’. Felter oprettet gennem Studio får automatisk et x_studio_‑præfiks, mens felter oprettet i kode får et teknisk navn, du selv fastsætter.

Hvordan feltet fungerer


Når du tilføjer et Boolean‑felt i en modul‑installation eller ved opgradering, opretter Odoo automatisk den tilsvarende kolonne i PostgreSQL — du behøver ikke lave manuelt SQL‑migrering.


Vigtigt: Boolean‑felter i Odoo returnerer aldrig None/NULL fra ORM‑siden — du får altid enten True eller False. Selv hvis databasen ikke har en eksplicit værdi, vil Odoo præsentere feltet som False ved læsning, hvilket adskiller sig fra fx Many2one eller Char, hvor tomme værdier kan være None.


Nøgleegenskaber for feltet

Her er de vigtigste attributter, du kan styre på et Boolean‑felt i Odoo:

  • default: Angiver standardværdien ved oprettelse. Oftest False, men kan sættes til True ved fx opt‑out workflows.
  • compute: Peg på en Python‑funktion, som beregner værdien dynamisk — nyttigt når flagget er et afledt udtryk.
  • store: Når der bruges compute, bestemmer store om værdien gemmes i databasen. Med store=True kan feltet bruges i søgninger og rapporter.
  • readonly: Gør feltet uændretbar i UI — typisk for systemstyrede flags.
  • copy: Styrer om værdien kopieres ved duplikering. Standard er True. For godkendelses‑ eller statusflags bør copy=False for at undgå at duplikerede poster arver en gammel tilstand.
  • groups: Begrænser hvem der kan se eller ændre feltet baseret på brugergrupper.

Visning i brugerfladen

I formularer ser du en standardHTML‑checkbox. I lister viser Odoo et flueben for True og intet for False, hvilket gør det nemt at scanne mange poster visuelt.

Du kan ændre udseendet med widgets: toggle‑widget giver en switch, mens boolean_favorite viser en stjerne‑ikon, som ofte bruges for produkter eller kontakter på websitet.


Brug i domænefiltre

Boolean‑felter er praktiske i Odoos domæner — de filtre, der bruges til søgninger, automatiseringer og adgangsregler. Et filter for poster, der kræver gennemgang, ser fx således ud:

[('needs_manual_review', '=', True)]

På grund af den binære natur kan du ofte bruge en simpel sammenligning med True eller False i domæner uden komplekse operatorer.

[('needs_manual_review', '=', False)]

Den entydige adfærd gør Boolean‑felter oplagte til automatiserede handlinger og server‑scripts, fordi de er lette at tjekke og behandle.


Interaktion med Odoos ORM

I udvikling er Boolean‑felter lige til: læs værdien på record‑objektet, sammenlign med True/False og skriv direkte. ORM og XML‑RPC håndterer typemappingen uden specialtilfælde, så du slipper for konverteringsproblemer.

Forretningsscenarier


Hvor du finder Boolean‑felter i praksis


Boolean‑felter bruges i alle afdelinger; her er nogle konkrete og hyppige eksempler fra virkelige workflows.

CRM: Markerede leads som kvalificerede


Salgsteams har ofte brug for et hurtigt flag for at vise, om et lead er blevet vurderet af en senior‑medarbejder. Et felt som is_qualified på lead‑modellen gør det nemt at filtrere pipeline og prioritere ressourcer uden at oprette ekstra stadier i salgstrakten.

Salg: Ordrer der kræver manuel gennemgang


Nogle ordrer, fx over en økonomisk grænse eller fra nye kunder, skal godkendes manuelt. Et needs_manual_review‑flag, sat via forretningsregler eller automatiske handlinger, giver finans eller operations en klar kø at arbejde på og forenkler godkendelsesprocessen.

Lager: Produkter udenfor kataloget


Når et produkt ikke længere sælges, men skal bevares i systemet af historiske årsager, er et is_discontinued‑flag mere præcist end at slette eller arkivere. Det kan bruges i indkøbsfiltre, prislister og onlineshop‑synlighed.

Bogføring: Fakturaer under tvist


I økonomiafdelingen kan fakturaer, der er omtvistede eller venter på kreditnota, markeres med under_dispute. Det giver struktureret søgning, rapportering og mulighed for at undertrykke betalingspåmindelser indtil sagen er løst.

HR: Tjek på kurser og certifikater

Oprettelse og tilpasning af Boolean‑feltet


HR bruger Boolean‑felter til at dokumentere, om en medarbejder har gennemført obligatoriske kurser, fx safety_training_completed. Det gør det enkelt at filtrere medarbejdere til compliance‑rapporter uden at bygge et helt modul til formålet.


Tre måder at tilføje et Boolean‑felt på

Valg afhænger af din tekniske tilgang: Studio for no‑code, Python‑moduler for versionering og kontrol, eller API‑baserede scripts ved automatiseret opsætning.

  1. Odoo Studio (ingen kode)
  2. Studio er det indbyggede værktøj til at ændre visninger og tilføje felter uden at skrive kode. Fremgangsmåden er kort sagt:
  3. Åbn Studio i Odoo‑menuen (kræver Studio‑appen).
  4. Gå til den formular, hvor feltet skal ligge.
  5. Træk en Checkbox fra sidepanelet ind i layoutet.

Sæt label, default og evt. readonly eller required i feltets egenskaber.


Gem og luk Studio — feltet oprettes automatisk i databasen med x_studio_‑præfiks og vises i UI uden genstart.

Python i et custom modul

For produktion og deploybar kode definerer udviklere felter i Python‑modeller, hvilket giver versionkontrol og testbarhed. Et simpelt eksempel:

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, )


Derefter tilføjes feltet i den relevante view‑XML, så det vises i UI. Odoo laver kolonnen i databasen ved install/upgrade.

For beregnede Boolean‑felter bruger du compute‑mønsteret:

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 gemmes det beregnede resultat i databasen, så du kan bruge feltet i søgninger og gruppering uden at beregne det on‑the‑fly hver gang.

XML‑RPC API

Når du automatiserer opsætning eller kører scripts mod en Odoo‑instans, kan du oprette felter via ir.model.fields gennem 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', }] )


Gode fremgangsmåder


Angivelsen state: 'manual' fortæller Odoo, at feltet er oprettet uden for et modul — passende for Studio‑ eller API‑oprettede felter.

1) Angiv altid standardværdi


Selvom Odoo implicit returnerer False, er det god praksis at sætte default=False i feltdefinitionen. Det gør intentionen tydelig i koden og undgår misforståelser i automatiseringer og filtre.

2) Navngiv felter som spørgsmål


Navne der læser naturligt som ja/nej‑spørgsmål er lettest at forstå: is_verified, needs_approval, has_warranty osv. Undgå generiske navne som flag eller status, som ikke forklarer formålet.

3) copy=False på godkendelsesflags


Hvis et flag angiver en tilstand, der ikke skal arves ved duplikering (fx approved), sæt copy=False. Ellers kan duplikerede poster fejlagtigt fremstå som allerede godkendte.

4) Brug computed felter til afledte tilstande


I stedet for at sprede skriveoperationer rundt i server‑actions, lav feltet beregnet med @api.depends(). Det centraliserer logikken, gør den deterministisk og nemmere at fejlfinde.

5) Tilføj feltet i søgevisningen hvis det bruges til filtrering

Almindelige faldgruber


Using Boolean for a state that has more than two options

Brug Boolean ikke til tilstande med flere muligheder


Den hyppigste fejl er at bruge Boolean for et felt med mere end to mulige tilstande. Når du har tre eller flere statuser, bliver løsningen rodet med flere flags. Brug i stedet et Selection‑felt eller en decideret statusworkflow.

Glemme copy=False på godkendelsesflager


Når poster duplikeres, kopieres felterne som standard. Hvis godkendelsesflag ikke nulstilles, kan du ende med poster, der fejlagtigt fremstår som færdigbehandlede.

Undlade at tilføje feltet i search‑view


Et filterbart Boolean‑felt, der ikke er synligt i søgebaren, tvinger brugerne til at bruge avanceret søgning hver gang — et unødvendigt tidstab i dagligdagen.

Bruge et custom Boolean i stedet for native active‑feltet


Hvis formålet er at skjule eller arkivere poster, brug Odoos indbyggede active‑felt i stedet for at bygge din egen synlighedslogik. Det bevarer standardadfærd og fungerer sammen med arkiv/reaktivering i UI.

Computed Boolean uden store=True i filtre

Konklusion


Hvis et beregnet felt ikke er gemt (store=False), kan det ikke bruges i SQL‑baserede søgninger eller gruppering. Hvis feltet skal være filterbart eller rapporterbart, skal du sætte store=True.


Boolean‑feltet forsvinder først når det fungerer

Godt implementerede Boolean‑felter er så diskrete, at brugerne ikke tænker over dem — de bare virker og støtter normale arbejdsgange, fra active‑flag til is_published på websitet.

At kende feltets adfærd og vælge rigtige defaults og attributter hjælper dig med at holde data‑modellen enkel og forudsigelig. Vælg Selection eller workflow ved flere tilstande — Boolean til klare binære valg. Et velimplementeret Boolean‑felt er usynligt i brugerenes hverdag. Et forkert brugt felt skaber forvirring og ad hoc‑løsninger. Forskellen ligger i at kende reglerne og konsekvent anvende dem. Hos Dasolo hjælper vi virksomheder med at designe, tilpasse og optimere Odoo på tværs af funktioner — fra datamodellering og felter til komplette moduler.

Boolean-felt i Odoo: Den komplette guide
Dasolo 6. marts 2026
Del dette indlæg
Log ind for at skrive en kommentar