Hoppa till innehåll

Booleanfält i Odoo: Den Kompletta Guiden

Allt du behöver veta om Boolean-fältet i Odoo-datamodellen, från kryssrutebeteende till teknisk anpassning
6 mars 2026 av
Booleanfält i Odoo: Den Kompletta Guiden
Dasolo
| Inga kommentarer ännu

Introduktion


Boolean-fältet är en av de enklaste fälttyperna i Odoo, och också en av de mest använda. Varje gång du kryssar i en ruta på en försäljningsorder, markerar en kund som aktiv, eller flaggar en produkt som favorit, interagerar du med ett Boolean-fält.


Trots sin enkelhet har Boolean-fältet några beteenden som är värda att förstå ordentligt. Att veta när man ska använda det, när man inte ska använda det, och hur man konfigurerar det väl kommer att hjälpa dig att bygga renare Odoo-miljöer och undvika några vanliga misstag som även erfarna team gör.


Denna guide täcker Boolean-fältet från alla vinklar: vad det lagrar, hur det beter sig i Odoo-datamodellen och användargränssnittet, hur man skapar eller anpassar det med Odoo Studio eller Python, verkliga affärsanvändningsfall, och praktiska tips för att få ut det mesta av denna fälttyp.

Vad är Boolean-fältet i Odoo


I Odoo ORM lagrar Boolean-fältet ett av två värden: True eller False. Det mappas direkt till en BOOLEAN-kolumn i PostgreSQL. Det finns ingen tvekan här: fältet är antingen markerat eller omarkerat, aktiverat eller inaktiverat, ja eller nej.


Ur användarperspektiv visas ett Boolean-fält som en checkbox i formulärvyer. I listvyer visas det vanligtvis som en bockikon när värdet är True och ingenting när det är False. I vissa konfigurationer visas det istället som en växlingsknapp istället för en traditionell checkbox, beroende på den tillämpade widgeten.


Så här ser en definition av ett Boolean-fält ut i en Python Odoo-modul:

from odoo import fields, models

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

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

Parameter string ställer in etiketten som visas i gränssnittet. Parameter default styr det initiala värdet när nya poster skapas. Utan ett default behandlar Odoo fältet som False automatiskt, men det anses vara god praxis att deklarera det uttryckligen.

I Odoo Studio kallas denna fälttyp helt enkelt för en Checkbox. Fält som skapas genom Studio får automatiskt ett x_studio_ prefix. När de skapas genom Python eller XML-RPC API definierar du det tekniska namnet själv.

Hur fältet fungerar


När du lägger till ett Boolean-fält i en Odoo-modell skapar ramverket automatiskt den motsvarande kolumnen i PostgreSQL-databasen under modulinstallation eller uppgradering. Ingen manuell SQL-migrering behövs.


En viktig sak att förstå: i Odoo håller ett Boolean-fält aldrig None eller NULL. ORM returnerar alltid antingen True eller False. Även om databasens kolumn inte har något värde kommer Odoo att returnera False när du läser fältet. Detta skiljer sig från andra fälttyper som Many2one eller Char, där ett tomt värde kommer tillbaka som False eller None och du måste kontrollera för båda.


Nyckelfältattribut

Här är de viktigaste egenskaperna du kan konfigurera på ett Boolean-fält i Odoo-ramverket:

  • default: Ställer in värdet när en ny post skapas. Nästan alltid inställt på False, men kan vara True för opt-out-scenarier.
  • compute: Kopplar en Python-metod som beräknar värdet dynamiskt. Användbart för härledda flaggor baserat på tillståndet för andra fält.
  • store: När den används med compute, avgör om värdet sparas i databasen. Med store=True kan beräknade Boolean-fält användas i sökfilter och rapporter.
  • readonly: Förhindrar användare från att manuellt ändra fältvärdet i gränssnittet. Vanligt för beräknade flaggor som endast ska sättas av systemet.
  • copy: Kontrollerar om fältvärdet överförs när en post dupliceras. Standardinställningen är True. För flaggor som "är godkänd", vill du vanligtvis ha copy=False så att duplicerade poster börjar rent.
  • groups: Begränsar synlighet och redigering till specifika användargrupper.

Hur det visas i vyer

I formulärvyer renderas ett Boolean-fält som en standard HTML-checkbox. I listvyer visar Odoo en bockikon för True och ingenting för False som standard. Detta gör listvyer lätta att skanna visuellt.

Du kan ändra hur ett Boolean-fält renderas med hjälp av vywidgets. toggle-widgeten visar det som en switch istället för en checkbox, vilket fungerar bra för inställningar eller preferenser. För visning i skrivskyddat läge renderar boolean_favorite-widgeten värdet som en stjärnikon, vilket du kan se på produkt- och kontaktformulär i standard Odoo.


Använda Boolean-fält i domänfilter

Boolean-fält är mycket praktiska att använda i Odoo-domäner, som är filteruttrycken som används i sökvyer, automatiserade åtgärder och åtkomstregler. Ett filter för icke-kontrollerade poster ser ut så här:

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

Eftersom det bara finns två möjliga värden kan du också använda den enklare formen utan operatorn:

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

Detta enkla filtreringsbeteende är en anledning till att Boolean-fält integreras så smidigt med Odoo:s automatiserade åtgärder, schemalagda åtgärder och serveråtgärder. De är lätta att kontrollera och agera på utan komplexa villkor.


Interaktion med Odoo ORM

Att läsa och skriva Boolean-fält i Odoo-utveckling är så direkt som det kan bli. Du får åtkomst till värdet på objektet, jämför det med True eller False, och tilldelar det direkt. ORM hanterar allt annat. Det finns inga konverteringar, inga serialiseringskantfall och inga överraskningar när värden skickas genom XML-RPC API:et heller, eftersom True och False mappas rent till sina XML-RPC boolean-ekvivalenter.

Affärsanvändningsfall


Boolean-fält förekommer i varje avdelning i en typisk Odoo-implementering. Här är fem praktiska exempel från verkliga affärsarbetsflöden.


CRM: Spåra om en Lead har blivit Kvalificerad

Säljteam behöver ofta markera vilka leads som har granskats av en senior representant och bekräftats som livskraftiga möjligheter. Ett Boolean-fält som kallas is_qualified på CRM-leadmodellen ger teamen ett enkelt sätt att filtrera sin pipeline. Okvalificerade leads kan hanteras av junior personal, medan de kvalificerade får prioriterad uppmärksamhet. Denna enkla kryssruta ersätter behovet av en dedikerad fas eller ett statusfält bara för detta ändamål.


Försäljning: Flagga Beställningar som Behöver Manuell Granskning

I vissa företag kräver vissa försäljningsorder extra godkännande innan de bekräftas, till exempel beställningar över ett visst belopp eller för nya kunder. Ett Boolean-fält needs_manual_review på försäljningsordern, kombinerat med en automatiserad åtgärd som ställer in det på True baserat på affärsregler, ger finans- eller driftteamet en tydlig kö att arbeta från. De kan filtrera beställningslistan efter detta fält och behandla godkännanden utan att gräva igenom hela beställningslistan.


Lager: Markera Produkter som Ute ur Katalog

När en produkt inte längre säljs men fortfarande behöver finnas kvar i systemet för historiska register, är arkivering inte alltid rätt alternativ. Ett Boolean-fält is_discontinued på produkttemplatet låter inköps- och försäljningsteam se vid en blick att artikeln inte ska beställas eller offereras till kunder. Du kan använda detta fält i prislistafilter, valideringsregler för inköpsorder och inställningar för webbshopens synlighet.


Bokföring: Identifiera Fakturor som Kräver Uppmärksamhet

Finansavdelningar behöver ibland flagga fakturor som har blivit bestridna, innehåller en prisskillnad eller väntar på en kreditnota. Istället för att förlita sig på fri-text anteckningar i chatter, ger ett Boolean-fält under_dispute teamet ett strukturerat sätt att filtrera och rapportera om dessa fakturor. Automatiserade påminnelser kan också undertryckas för fakturor med denna flagga inställd på True, vilket förhindrar onödig betalningspress på en kund medan ett problem löses.


HR: Spåra Certifieringar och Utbildningsslutförande

HR-avdelningar behöver ofta bekräfta att anställda har genomfört obligatorisk utbildning eller har en nödvändig certifiering. Ett Boolean-fält i anställdas register, som safety_training_completed, ger ett enkelt och granskningsbart sätt att spåra detta. Chefer kan filtrera sin teamlista för att se vem som fortfarande behöver genomföra utbildningen, och datan kan användas i efterlevnadsrapporter utan att bygga en komplex dedikerad modul.

Skapa eller anpassa Boolean-fältet


Det finns tre huvudsakliga metoder för att lägga till ett Boolean-fält i en Odoo-modell, beroende på din tekniska uppsättning och den nivå av anpassning du behöver.


Använda Odoo Studio (Ingen kod)

Odoo Studio är det inbyggda lågkodverktyget för att anpassa Odoo utan att skriva någon Python eller XML. För att lägga till ett Boolean-fält genom Studio:

  1. Öppna Odoo Studio från huvudmenyn (kräver Studio-appen).
  2. Navigera till formuläret där du vill lägga till fältet.
  3. Dra ett Checkbox-fält från sidofältet till formulärlayouten.
  4. Ställ in etiketten, standardvärdet och eventuella krav eller skrivskyddade begränsningar i fältets egenskapspanel.
  5. Spara och stäng Studio.

Studio hanterar allt automatiskt: fältet skapas i databasen med ett x_studio_-prefix och läggs till i vyn. Ingen omstart eller uppgradering krävs.


Använda Python i en anpassad modul

För utvecklare som bygger Odoo-moduler definieras Boolean-fält direkt i Python-modellfiler. Detta är den rekommenderade metoden för all anpassning som behöver versionskontrolleras, testas och distribueras över flera miljöer:

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

Efter att ha definierat fältet lägger du till det i den relevanta vy XML-filen så att det visas i gränssnittet. Odoo skapar databas kolumnen när modulen installeras eller uppgraderas.


För beräknade Boolean-fält ser mönstret ut så här:

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 sparas det beräknade värdet i databasen, vilket gör det tillgängligt i sökfilter och listvygruppering utan att behöva beräkna på varje sidladdning.


Använda XML-RPC API

Om du hanterar Odoo-anpassningar programmässigt, till exempel som en del av en distributionspipeline eller ett fjärrkonfigurationsskript, kan Boolean-fält skapas via XML-RPC API på ir.model.fields modellen:

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',
    }]
)

Värdet state: manual informerar Odoo att detta fält skapades utanför en modul, vilket är den korrekta inställningen för fält som skapats genom Studio eller API. Detta är exakt hur Dasolo hanterar fjärrfältsskapande för kunder som en del av automatiserade konfigurationsarbetsflöden.


Bästa praxis


1. Definiera alltid ett standardvärde

Även om Odoo returnerar False för Boolean-fält utan standard, är det bästa praxis att uttryckligen deklarera default=False i din fältdefinition. Det kommunicerar avsikt tydligt till alla som läser modellkoden och förhindrar tvetydighet när fältet används i automatiserade åtgärder eller filter.


2. Använd beskrivande namn som läses som frågor

Booleska fältnamn fungerar bäst när de läses naturligt som en ja/nej-fråga. Namn som is_verified, needs_approval, has_warranty eller is_key_account är omedelbart förståeliga. Undvik vaga namn som flag, status eller check, som inte säger något om vad fältet faktiskt representerar.


3. Sätt copy=False för godkännande- och statusflaggor

Om ditt booleska fält representerar ett tillstånd som inte ska överföras när en post dupliceras, till exempel "är godkänd" eller "har skickats", lägg alltid till copy=False. Annars kommer duplicering av en post att kopiera flaggvärdet, vilket kan leda till att poster visas som godkända eller skickade när de inte har genomgått rätt process.


4. Använd beräknade booleska fält för härledda tillstånd

Undvik att skriva serveråtgärder eller Python-kod som manuellt uppdaterar ett booleskt fält som svar på andra fältändringar. Definiera det istället som ett beräknat fält med @api.depends(). Detta håller din logik på ett ställe, körs automatiskt vid varje sparande och är mycket enklare att underhålla och felsöka än spridda skrivoperationer på flera ställen i kodbasen.


5. Lägg till booleska fält i sökvyerna när de används för filtrering

Om användare regelbundet behöver filtrera poster baserat på ett booleskt fält, lägg till det uttryckligen i sökvy. I Studio, aktivera sökalternativet i fältets egenskapspanel. I kod, lägg till det i <search> vy XML. Detta ger användare en ren filterknapp i sökfältet istället för att tvinga dem att använda avancerade filter varje gång.

Vanliga fallgropar


Att använda booleskt för ett tillstånd som har mer än två alternativ

Detta är det vanligaste misstaget som team gör med booleska fält. Om en post kan vara i ett av tre eller fler tillstånd, som "väntande", "godkänd" och "avvisad", är ett booleskt fält fel verktyg. Du slutar med att lägga till en andra boolesk, sedan en tredje, och logiken blir omöjlig att hantera. Använd istället ett urvalsfält eller en riktig statusarbetsflöde. Booleska fält är för genuint binära situationer.


Att glömma att sätta copy=False på godkännandeflaggor

När användare duplicerar poster i Odoo kopieras alla fältvärden som standard. En order som markerats som "godkänd" eller "granskad" kommer att ha dessa flaggor inställda på True på duplicatet omedelbart. Om den duplicerade posten ska börja från en ren tavla, lägg till copy=False till varje flagga som representerar en slutförd åtgärd eller ett uppnått tillstånd.


Att inte lägga till fältet i sökvy

Ett Boolean-fält som användare behöver filtrera på, men som inte finns i sökvy, tvingar dem att öppna den avancerade filterdialogen varje gång. Detta saktar ner dagliga arbetsflöden avsevärt. Om du lägger till ett Boolean-fält som folk kommer att använda för att hitta poster, ta det extra steget att lägga till det i sökvy samtidigt.


Att använda ett Boolean-fält istället för det aktiva fältet

Odoo har ett inbyggt active-fält på de flesta modeller som kontrollerar om poster visas i standardvyer. Om ditt Boolean-fält är avsett att dölja eller arkivera poster, använd det inhemska active-fältet och dess växlingsmekanism istället för att bygga en anpassad synlighetslösning. Detta håller din datamodell i linje med standard Odoo-beteende och fungerar bra med de arkiverings- och avarkiveringsåtgärder som redan är inbyggda i användargränssnittet.


Beräknade Boolean-fält utan store=True i filter

Om du skapar ett beräknat Boolean-fält och försöker använda det i sökfilter eller gruppering av listvyer utan store=True, kommer Odoo att ge ett felmeddelande eller tyst ignorera filtret. Icke-lagrade beräknade fält existerar endast i minnet och kan inte användas i SQL-frågor. Om ett beräknat Boolean behöver vara filtrerbart eller rapporterbart, lägg alltid till store=True i fältdefinitionen.

Slutsats


Boolean-fältet är den typ av fält som du slutar lägga märke till just för att det fungerar så bra. Det finns överallt i Odoo, från active-flaggan som kontrollerar posternas synlighet, till is_published-fältet som driver din webbplats, till de dussintals anpassade flaggor som företag lägger till i sina egna arbetsflöden varje dag.


Att förstå hur det beter sig i Odoo-datamodellen, hur man konfigurerar det korrekt med rätt standarder och attribut, och när man ska använda det jämfört med andra fälttyper som Selection kommer att hjälpa dig att bygga implementationer som är rena, förutsägbara och lätta att underhålla.

Ett välgjort Boolean-fält är osynligt för slutanvändaren. Det fungerar bara. Ett Boolean-fält som används felaktigt skapar förvirring, korrupta tillstånd och en växande hög av lösningar. Skillnaden handlar om att känna till reglerna och tillämpa dem konsekvent.

På Dasolo hjälper vi företag att implementera, anpassa och optimera Odoo över alla avdelningar. Oavsett om du behöver hjälp med att utforma en ren datamodell, lägga till anpassade fält i dina arbetsflöden, eller bygga en fullständig Odoo-modul från grunden, är vårt team här för att stödja dig. Kontakta oss och låt oss prata om ditt Odoo-projekt.

Booleanfält i Odoo: Den Kompletta Guiden
Dasolo 6 mars 2026
Dela detta inlägg
Logga in att lämna en kommentar