Skip to Content

Hele Guiden Til Heltal Felt i Odoo

Alt hvad du behøver at vide om Integer-feltet i Odoo-datamodellen, fra forretningsbrug til teknisk tilpasning
6. marts 2026 af
Hele Guiden Til Heltal Felt i Odoo
Dasolo
| Ingen kommentarer endnu

Introduktion


Hvis du nogensinde har angivet en mængde på en salgsordre, sporet hvor mange dage en opgave har været åben, eller konfigureret en prioriteringsscore på et lead, har du brugt et heltalsfelt i Odoo. Det er en af de mest almindelige felttyper i Odoo-datamodellen, og alligevel undervurderes det ofte.


At forstå, hvordan heltalsfeltet fungerer, er vigtigt for forretningsbrugere, der konfigurerer formularer, for udviklere, der skriver brugerdefinerede moduler, og for konsulenter, der designer datamodeller for deres kunder.


Denne guide dækker, hvad heltalsfeltet gemmer, hvordan det opfører sig i Odoo-rammen og -grænsefladen, hvordan man opretter eller tilpasser det med Odoo Studio eller Python, sammen med praktiske anvendelsestilfælde og ting at være opmærksom på.

Hvad er heltalsfeltet i Odoo


I Odoo ORM er heltalsfeltet designet til at gemme hele tal. Ingen decimaler, ingen brøker. Det kortlægges direkte til en INTEGER kolonne i PostgreSQL, som er et 4-byte signeret heltal, der understøtter værdier fra cirka -2 milliarder til +2 milliarder.


Fra brugerens perspektiv fremstår et heltalsfelt som en simpel numerisk indtastning i formularer og som en nummerkolonne i listevisninger. Det er det rigtige valg for alt, der skal tælles i hele enheder: mængder, point, varigheder i dage, sekvensnumre eller enhver metrisk, hvor en halv enhed ikke giver mening.


Her er en typisk definition i et Python-modul:

from odoo import fields, models

class ProjectTask(models.Model):
    _inherit = 'project.task'

    estimated_hours = fields.Integer(
        string='Estimated Hours',
        default=0,
    )

Parameteren string styrer etiketten, der vises i grænsefladen. Parameteren default indstiller værdien automatisk, når en ny post oprettes.


I Odoo Studio er denne felttype simpelthen angivet som Integer. Når den oprettes gennem Studio, får den et x_studio_ præfiks. Når den oprettes via Python eller XML-RPC API, vælger du selv det tekniske navn.

Hvordan feltet fungerer


Når du definerer et heltalsfelt i Odoo, opretter rammeværket automatisk den tilsvarende databasekolonne under modulinstallation eller opgradering. Du behøver ikke at skrive SQL-migrationer manuelt.


På databaseniveau er kolonnen typet som INTEGER i PostgreSQL. Odoo ORM tager sig af typekonvertering, så hvis brugeren ikke indtaster noget, returnerer feltet 0 i stedet for None eller False. Dette er en vigtig forskel sammenlignet med andre felttyper som Float eller Char, som kan returnere False når de er tomme.


Nøglefeltattributter

Her er de vigtigste egenskaber, du kan konfigurere på et heltalsfelt:

  • string: Etiketten, der vises for brugerne i grænsefladen.
  • default: Den værdi, der automatisk tildeles nye poster. Standard til 0, hvis ikke angivet.
  • required: Gør feltet obligatorisk. Da standarden allerede er 0, er dette mest nyttigt, når du vil blokere for at gemme med en nulværdi.
  • readonly: Forhindrer brugere i at redigere værdien direkte i grænsefladen.
  • index: Opretter et PostgreSQL-indeks på kolonnen, hvilket fremskynder filtre og søgninger på det felt.
  • compute: Knytter en Python-metode, der dynamisk beregner feltværdien fra andre felter.
  • store: Kombineret med compute styrer, om den beregnede værdi gemmes i databasen eller genberegnes on-the-fly.
  • copy: Styrer, om værdien overføres, når en post duplikeres.
  • groups: Begrænser synligheden af feltet til specifikke brugergrupper.

Hvordan det vises i visninger

I formularvisninger gengives et heltal som et numerisk inputfelt. Odoo tilføjer automatisk tusindseparatorer for læsbarhed, når der vises større tal.


I listevisninger vises heltalsfelter som almindelige tal, højrejusteret efter konvention. I søgevisninger understøtter de lig med, større end og mindre end filtre.


Du kan parre et heltalsfelt med specifikke widgets i visninger for at ændre, hvordan det ser ud. priority-widgeten forvandler for eksempel et heltalsfelt til klikbare stjerner. progressbar-widgeten kan vise en heltalsværdi som en statuslinje, når den kombineres med en maksimal værdi.


Interaktion med Odoo ORM

Fra en udviklers perspektiv er det ligetil at læse og skrive Integer-felter. Værdien er altid en Python int. Tomme Integer-felter returnerer 0, hvilket betyder, at du skal være forsigtig, når du skriver betingelser, der tjekker for fravær af en værdi. Et nul og et tomt felt ser ens ud, medmindre du designer omkring det.


Integer-felter fungerer også naturligt i beregnede felter og i domænefiltre, der bruges af visninger, serverhandlinger og automatiserede handlinger i hele Odoo-rammen.

Forretningsanvendelser


Integer-feltet vises i næsten hver modul i Odoo. Her er fem praktiske scenarier, hvor det spiller en central rolle.


1. CRM: Lead Scoring

Salgs teams ønsker ofte at prioritere leads baseret på en score. Du kan tilføje et brugerdefineret Integer-felt kaldet Lead Score på CRM-mulighedsmodellen. Salgsrepræsentanter opdaterer scoren manuelt, eller en automatiseret handling beregner den baseret på kriterier som virksomhedsstørrelse, budget eller engagementniveau.

Dette gør det nemt at sortere din pipeline efter score og fokusere på de mest lovende muligheder.


2. Salg: Minimumsordremængder

I Salg- og Lager-modulerne kontrollerer Integer-felter minimumsordremængder på produkter eller prislister. At sætte et minimum på 10 enheder på et produkt sikrer, at systemet blokerer ordrer under denne grænse, hvilket sparer frem og tilbage med kunder senere.


3. Lager: Genbestillingsregler

Genbestillingsregler i Odoo er helt afhængige af Integer-felter for minimums- og maksimumsmængdegrænser. Når lageret falder under minimum, udløser Odoo automatisk en genopfyldningsordre op til den definerede maksimum. At få disse værdier rigtige er kritisk for at undgå både lagerudsolgte situationer og overlager.


4. Projektledelse: Story Points og Effort Estimates

Teams, der bruger Odoo Project til agile arbejdsgange, tilføjer ofte et brugerdefineret Integer-felt til story points eller estimerede timer. Dette felt vises på opgaver i kanban- eller listevisning og hjælper teamet med at spore kapacitet og hastighed på tværs af sprints.


5. Regnskab: Betalingsbetingelser Dage

Betalingsbetingelser i Odoo Regnskab bruger heltal til at definere antallet af dage, der er tilladt for betaling. Net 30, Net 60 eller tilpassede betingelser konfigureres alle gennem heltalsværdier. Disse værdier indgår direkte i beregningerne af fakturaens forfaldsdato, hvilket gør nøjagtigheden her vigtig for likviditetsstyring.

Oprettelse eller tilpasning af heltalsfeltet


Der er to hovedmetoder til at tilføje et heltalsfelt til en Odoo-model: ved at bruge Odoo Studio uden at skrive kode, eller ved at definere det direkte i Python for mere kontrol.


Brug af Odoo Studio

Odoo Studio er det no-code og low-code værktøj, der er indbygget i Odoo til tilpasning af felter og visninger. For at tilføje et heltalsfelt gennem Studio:

  1. Åbn den formular, hvor du vil tilføje feltet.
  2. Aktivér Studio fra menuen øverst til højre.
  3. I feltlisten til venstre, træk Integer feltet ind på din formular.
  4. Indstil feltetiketten, vælg om det er obligatorisk, og konfigurer standardværdien.
  5. Gem og afslut Studio.

Studio opretter feltet med et x_studio_ præfiks automatisk og gemmer definitionen i ir.model.fields. Feltet er straks tilgængeligt i formularer og listevisninger.


Brug af Python (Teknisk Tilpasning)

For developers building custom modules or performing Odoo development with more control, the Integer field is defined directly in a Python model class:


from odoo import fields, models

class CrmLead(models.Model):
    _inherit = 'crm.lead'

    x_lead_score = fields.Integer(
        string='Lead Score',
        default=0,
        index=True,
        help='Score from 0 to 100 used to prioritize opportunities',
    )

After defining the field in code, run odoo-bin -u your_module to apply the changes to the database. The column is created automatically.


Using the XML-RPC API

You can also create an Integer field remotely using the Odoo XML-RPC API. This is useful for automated deployments or when working without direct server access:


field_id = models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'ir.model.fields', 'create',
    [{
        'name': 'x_lead_score',
        'field_description': 'Lead Score',
        'model_id': crm_lead_model_id,
        'ttype': 'integer',
        'state': 'manual',
    }]
)

The ttype value for Integer fields is simply 'integer'. The state must be 'manual' to indicate a custom field rather than a module-defined one.


Adding a Computed Integer Field

Computed Integer fields are powerful for deriving values automatically. For example, counting the number of tasks linked to a project:


class Project(models.Model):
    _inherit = 'project.project'

    open_task_count = fields.Integer(
        string='Open Tasks',
        compute='_compute_open_task_count',
        store=True,
    )

    def _compute_open_task_count(self):
        for project in self:
            project.open_task_count = self.env['project.task'].search_count([
                ('project_id', '=', project.id),
                ('stage_id.fold', '=', False),
            ])

Setting store=True saves the value in the database, making it available for filtering and sorting in list views without recalculating it every time.

Bedste praksis


Here are practical tips for getting the most out of Integer fields in your Odoo data model.


Brug heltal til tællinger og hele enheds mængder

Vælg heltal, når værdien altid skal være et helt tal, og decimaler ikke ville give mening. For alt, der involverer penge, målinger eller mængder, der kan være brøkdel, skal du i stedet bruge Float- eller Monetary-feltet.


Sæt en fornuftig standard

Heltalsfelter har som standard 0 i Odoo. I mange tilfælde er det fint, men tænk over, om nul er en meningsfuld værdi for dit brugsscenarie. Hvis nul betyder noget specifikt (såsom ingen score tildelt endnu), vil du måske håndtere det eksplicit i din forretningslogik eller tilføje et hjælpes Boolean-felt til at spore, om værdien er blevet indstillet.


Tilføj et indeks, når du filtrerer på feltet

Hvis du planlægger at filtrere, sortere eller gruppere efter et heltal felt ofte, så tilføj index=True i feltdefinitionen. Dette opretter et databaseindeks og kan betydeligt fremskynde forespørgsler på store datasæt. Ulempen er en lille stigning i lager og skrivningstid, hvilket næsten altid er det værd for felter, der bruges i søgeforhold.


Brug store=True for beregnede heltalsfelter

Hvis du definerer et beregnet heltalsfelt, som brugerne har brug for at filtrere eller sortere på i listevisninger, skal du altid indstille store=True. Uden det kan Odoo ikke bruge feltet i domænefiltre, og gruppering efter det vil ikke fungere som forventet.


Dokumenter dine intervaller

Når et heltalsfelt har et meningsfuldt interval, som en score fra 0 til 100, dokumenter det i help-parameteren. Denne tekst vises som et tooltip i grænsefladen og sparer brugerne for at gætte, hvilke værdier der er gyldige.


Tænk dig om to gange, før du bruger heltal til ID'er eller referencer

Hvis du har brug for at referere til en anden post, skal du bruge et Many2one-felt i stedet for at gemme et ID i et heltalsfelt manuelt. Many2one-felter giver dig indbygget navigation, kaskaderegler og korrekt ORM-integration. Et heltal, der holder et råt ID, er skrøbeligt og omgår Odoo-rammen.

Almindelige faldgruber


Disse er de fejl, der oftest opstår, når man arbejder med Integer-felter i Odoo.


Forveksling af Integer med Float

En almindelig fejl er at bruge et Integer-felt, hvor et Float-felt ville være mere passende. Hvis dine brugere nogensinde skal indtaste 1,5, 0,25 eller en hvilken som helst brøkdel, er Integer det forkerte valg. Odoo vil stille og roligt afskære decimalinddata, hvilket fører til datatab og forvirring blandt brugerne. Brug Float til mængder, der kan være brøkdele, og Monetary til valuta værdier.


Antagelse om at nul betyder tomt

Fordi Integer-felter altid returnerer 0, når de ikke er indstillet, er der ingen måde at skelne mellem en post, hvor feltet aldrig blev udfyldt, og en hvor nogen bevidst indtastede nul. Hvis denne skelnen er vigtig for dit workflow, så tilføj et Boolean-felt som has_score ved siden af Integer-feltet, eller brug et Float-felt med en False standard i stedet.


Ikke at tilføje et indeks på ofte filtrerede felter

Hvis du tilføjer et Integer-felt og senere bruger det som et filter i visninger eller automatiserede handlinger, kan det at glemme at tilføje index=True mærkbart sænke listevisninger på større databaser. Det er lettere at tilføje indekset fra starten end at optimere senere.


Brug af Integer til at gemme decimalbaserede forhold

Nogle gange gemmer udviklere procenter som Integer-felter og skriver 75 for at betyde 75%. Dette fungerer, indtil nogen har brug for 72,5%, hvorefter feltet bryder kravet. Hvis der er nogen chance for, at en procentdel eller et forhold vil have decimalpræcision, så brug Float fra starten.


Glemme store=True på beregnede felter, der bruges i filtre

Dette er en af de mest almindelige fejl i Odoo-udvikling. Et beregnet Integer-felt uden store=True kan ikke bruges i domænefiltre, automatiserede handlinger eller listevisningsgruppeoperationer. Tænk altid over, hvor feltet vil blive brugt, før du beslutter, om det skal gemmes.

Konklusion


Integer-feltet er en grundlæggende byggesten i Odoo-datamodellen. Det ser enkelt ud, og i de fleste tilfælde er det det. Men at kende dets specifikke adfærd, som det faktum at tomme felter returnerer 0 og at beregnede felter har brug for store=True for at fungere i filtre, hjælper dig med at undgå de slags fejl og designproblemer, der er lette at introducere og sværere at rette senere.


Uanset om du konfigurerer Odoo til et salgsteam, bygger et tilpasset modul eller designer genbestillingsregler for et lager, vil heltal vises i hvert trin. At forstå, hvordan de fungerer i Odoo ORM, hvordan man opretter dem med Studio eller Python, og hvornår man skal bruge dem i stedet for Float eller Monetary, er en del af det, der gør en Odoo-implementering solid og vedligeholdelsesvenlig.


Hvis du arbejder på en Odoo-tilpasning og vil sikre, at din datamodel er bygget korrekt fra starten, betaler denne slags grundlæggende viden sig over hele projektets livscyklus.

Arbejd med en Odoo-ekspert


Hos Dasolo hjælper vi virksomheder med at implementere, tilpasse og optimere Odoo på tværs af alle moduler og industrier. Uanset om du har brug for at designe en ren datamodel, bygge tilpassede felter og arbejdsgange, eller forbinde Odoo til eksterne systemer gennem API'en, bringer vi erfaringen til at gøre det rigtigt.


Hvis du har spørgsmål om din Odoo-opsætning eller ønsker at diskutere et projekt, kontakt vores team. Vi er glade for at hjælpe.

Hele Guiden Til Heltal Felt i Odoo
Dasolo 6. marts 2026
Del dette indlæg
Log ind for at skrive en kommentar