Skip to Content

Helt Om Integer Field i Odoo: Full Guide for Utviklere

Alt du bør vite om heltallsfeltet i Odoo: hvordan det brukes i virksomheten og hvordan du tilpasser det teknisk
6. mars 2026 etter
Helt Om Integer Field i Odoo: Full Guide for Utviklere
Dasolo
| No comments yet

Innledning


Har du noen gang angitt antall på en salgsordre, målt hvor mange dager en oppgave har stått åpen eller satt en prioritet på en lead? Da har du brukt et heltallsfelt i Odoo. Det er blant de mest brukte felttypene i systemet, men blir ofte tatt for gitt.


Å kjenne egenskapene til heltallsfeltet er nyttig både for brukere som tilpasser skjemaer, utviklere som skriver tillegg og konsulenter som planlegger dataarkitekturen for kunder.


Denne guiden forklarer hva et heltallsfelt lagrer, hvordan det oppfører seg i Odoo både teknisk og i brukergrensesnittet, hvordan du legger det til med Odoo Studio eller kode, konkrete bruksområder og hva du bør passe på.

Hva er et heltallsfelt i Odoo


I Odoo sitt ORM er et heltallsfelt beregnet for hele tall — ingen desimaler eller brøkdeler. Det korresponderer til en INTEGER-kolonne i PostgreSQL, som typisk er en 4‑byte signert heltallstype med et stort, men begrenset, verdiområde.


For brukerens del vises feltet som et enkelt tallfelt i skjemaer og som kolonne i lister. Bruk det når verdien kun gir mening i hele enheter: antall, poeng, dager, rekkefølge eller alle målinger hvor halve enheter ikke hører hjemme.


Et standardoppsett i en Python-modul ser vanligvis slik ut når du definerer feltet i modellen.

from odoo import fields, models

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

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

Parameteren for label bestemmer hva brukeren ser i grensesnittet, og default angir hvilken verdi nye poster får automatisk ved opprettelse.


I Odoo Studio heter typen enkelt og greit «Integer». Felter opprettet der får teknisk navn med x_studio_-prefiks, mens felt laget i kode eller via API får det navnet du velger.

Hvordan feltet fungerer


Når du definerer et heltallsfelt i modellen, oppretter Odoo automatisk den nødvendige databasekolonnen under installasjon eller oppgradering av modulen — du slipper manuelle SQL-migrasjoner.


I databasen blir kolonnen lagret som INTEGER. ORM-en sørger for typekonvertering, og et tomt heltallsfelt returnerer 0 i stedet for None eller False. Dette skiller seg fra andre felttyper og påvirker hvordan du må håndtere fravær av verdi i forretningslogikk.


Viktige feltegenskaper

Her er de viktigste innstillingene du bør kjenne til for et heltallsfelt:

  • string: Teksten som vises som etikett i brukergrensesnittet.
  • default: Verdi som automatisk settes for nye poster. Standard er 0 hvis du ikke oppgir noe annet.
  • required: Gjør feltet obligatorisk. Siden standardverdien ofte er 0, brukes dette mest når du vil forhindre lagring med en nullverdi.
  • readonly: Låser feltet slik at brukere ikke kan endre det direkte i skjemaet.
  • index: Oppretter en PostgreSQL-index for å gjøre søk og filtrering på feltet raskere.
  • compute: Knytter feltet til en Python‑metode som beregner verdien dynamisk fra andre felt.
  • store: I kombinasjon med compute avgjør dette om beregnet verdi lagres i databasen eller regnes ut ved hver visning.
  • copy: Bestemmer om verdien kopieres ved duplikering av poster.
  • groups: Begrens synlighet til bestemte brukergrupper.

Slik vises det i visninger

I skjemaer får du et numerisk inputfelt, og Odoo setter automatisk tusenskilletegn ved visning av større tall for å gjøre dem mer lesbare.


I listevisninger vises heltall vanligvis høyrejustert. I søk kan du bruke filtre som lik, større enn og mindre enn.


Du kan også gi feltet spesielle widgets for å endre presentasjonen. Et prioritets‑widget kan for eksempel gjøre heltallet om til klikkbare stjerner, og et progressbar‑widget kan vise verdien som fremdrift mot en maksverdi.


Samarbeid med Odoo ORM

For utviklere er lesing og skriving av heltallsfelt enkelt: verdien håndteres som en Python int. Husk at et tomt felt gir 0, så betingelser som skal skille «ikke satt» fra «satt til null» må designes bevisst.


Heltallsfelt fungerer godt i beregnede felt og i domener som brukes i visninger, server‑ eller automatiserte handlinger i hele Odoo‑rammeverket.

Forretningsscenarier


Praktiske bruksområder


1) CRM: Lead‑poeng

Selgere kan prioritere leads med en poengscore. Et heltallsfelt som «Lead Score» på CRM‑modellen lar selgerne legge inn eller automatisere en score basert på kriterier som størrelse, budsjett eller aktivitet.

Det gjør det enkelt å sortere og fokusere pipeline‑arbeidet mot de mest lovende mulighetene.


2) Salg: Minimumsordre

I salgs‑ og lagerstyring brukes heltall for minsteordre‑kvantiteter. Setter du minsteordre til 10, blokkerer systemet bestillinger under denne grensen og reduserer uklarhet i dialogen med kunden.


3) Lager: Påfyllregler

Påfyllingsregler baserer seg på heltallsfelter for min/maks beholdning. Når beholdningen faller under min, trigges en bestilling opp til maks‑nivå. Riktige tall her er avgjørende for å unngå tomme hyller eller overlager.


4) Prosjekt: Story points og estimater

Agile team bruker ofte et heltallsfelt for story points eller estimerte timer. Feltet vises i kanban og liste, og hjelper med å måle kapasitet og hastighet over sprintene.


5) Regnskap: Betalingsbetingelser i dager

I regnskapet definerer heltallsfelt antall dager for betalingsbetingelser. Net 30 eller Net 60 beregnes direkte fra disse verdiene og påvirker forfallsdatoer og likviditetsstyring.

Opprette eller tilpasse heltallsfeltet


To måter å legge til et heltallsfelt


Du kan enten bruke Odoo Studio uten å kode, eller definere feltet i Python for full kontroll.

Bruke Odoo Studio

  1. Studio tilbyr en enkel måte å skreddersy skjemaer og felt uten programmering. Fremgangsmåten er intuitiv: åpne skjemaet du vil endre, aktiver Studio og dra inn et heltallsfelt.
  2. Aktiver Studio fra menyen øverst i høyre hjørne.
  3. I feltlisten til venstre drar du Integer‑feltet inn på ønsket plass i skjemaet.
  4. Sett etikett, bestem om det skal være obligatorisk og angi standardverdi.
  5. Lagre og avslutt Studio for å aktivere feltet.

Studio oppretter feltet med x_studio_-prefiks og registrerer det i ir.model.fields, og feltet blir umiddelbart tilgjengelig i visninger.


Definere feltet i Python (teknisk tilpasning)

For utviklere som bygger moduler, legges feltet inn i modellklassen i Python for mer kontroll over attributter og indeksere eller hjelp‑tekster.


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

Etter å ha lagt inn feltet i koden kjører du oppgradering av modulen (odoo-bin -u your_module) for at kolonnen blir lagt til i databasen.


Opprette felt via XML‑RPC API

Du kan også opprette et heltallsfelt eksternt med Odoo XML‑RPC API — nyttig ved automatisert utrulling eller når du ikke har servertilgang direkte.


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

ttype for heltallsfelt er 'integer', og state bør settes til 'manual' for å markere feltet som en tilpasning og ikke en moduldefinert feltdefinisjon.


Beregnet heltallsfelt

Beregnete heltallsfelt lar systemet fylle ut verdier automatisk, for eksempel å telle hvor mange åpne oppgaver et prosjekt har.


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

Ved å sette store=True lagres det beregnede resultatet i databasen, noe som gjør feltet brukbart i filtre og sortering uten å måtte regne det ut ved hver visning.

Beste praksis


Tips for effektiv bruk


Bruk heltall for telling og hele enheter

Velg heltallsfelt når verdien alltid må være et helt tall. For penger, målinger eller andre verdier som kan være brøkdeler, er Float eller Monetary riktig valg.


Angi en fornuftig standardverdi

Siden heltallsfelt defaulter til 0, vurder om 0 gir mening i din sammenheng. Hvis 0 betyr «ikke satt», kan det være bedre å ha en ekstra Boolean som markerer om verdien er fylt inn, eller bruke en annen felttype.


Legg til indeks dersom du søker ofte på feltet

Hvis feltet skal brukes mye i filtre, grupperinger eller sortering på store datamengder, bør du sette index=True for bedre ytelse. Kostnaden i lagringsplass og skrivehastighet er vanligvis liten sammenlignet med gevinsten.


Bruk store=True for beregnede felt som skal filtreres

Beregnete felt som må kunne filtreres eller grupperes i lister må lagres i databasen ved å sette store=True.


Dokumenter gyldige verdier og grenseverdier

Er feltet for eksempel en score 0–100, legg denne informasjonen i help‑teksten slik at brukerne vet hvilke verdier som er tillatt.


Unngå å bruke heltall til å lagre ID‑referanser

Hvis du trenger å peke på en annen post, bruk Many2one. Å lagre rå ID‑verdier i et heltallsfelt gjør modellen skjørere og omgår ORM‑fordelene som lenking, referanseintegritet og navigasjon.

Vanlige fallgruver


Vanlige feil og misforståelser


Forveksling av Integer og Float

En klassisk feil er å bruke Integer der Float er nødvendig. Hvis brukerne trenger 1.5 eller 0.25, vil heltall fjerne desimalene og føre til tap av presisjon. Bruk Float for brøkverdier og Monetary for valuta.


Å anta at null betyr «ikke satt»

Fordi tomme heltallsfelt returnerer 0, kan du ikke skille mellom «aldri satt» og «satt til 0» uten ekstra felter eller logikk. Hvis denne forskjellen er viktig, legg til en Boolean som angir om verdien er tilordnet.


Manglende indeks på felt som ofte brukes i søk

Hvis du glemmer index=True og senere bruker feltet i filtre, kan ytelsen lide på store databaser. Det er enklere å legge til indeksen fra starten enn å optimalisere i etterkant.


Å bruke heltall for desimalbaserte prosenter

Noen lagrer prosent som heltall (75 for 75%), men kravet om desimalpresisjon (f.eks. 72,5%) bryter dette. Hvis prosenten kan trenge desimaler, bruk Float tidlig.


Glemme store=True på beregnede felt brukt i filtre

Et beregnet heltallsfelt uten store=True kan ikke brukes i domener, automatiske handlinger eller gruppeoperasjoner — en vanlig og kostbar feil.

Oppsummering


Oppsummering av nytte og oppførsel


Heltallsfeltet er en enkel, men grunnleggende byggekloss i Odoo. Å forstå særtrekk som at tomme felt gir 0, og at beregnede felt må lagres for å brukes i filtre, hjelper deg å unngå feil som er vanskelige å rydde opp i senere.


Enten du setter opp Odoo for salg, bygger en modul eller definerer påfyllregler i lager, vil heltallsfelt dukke opp overalt. Å velge riktig felttype og sette riktige egenskaper er avgjørende for en ryddig og vedlikeholdbar løsning.

Jobb med en Odoo-ekspert


Hos Dasolo hjelper vi bedrifter med å implementere, tilpasse og optimalisere Odoo på tvers av moduler og bransjer. Vi hjelper med datamodellering, skreddersydde felt og arbeidsflyter, og integrasjoner mot eksterne systemer via API.


Har du spørsmål om ditt Odoo‑oppsett eller ønsker å diskutere et prosjekt, ta kontakt med vårt team— vi bistår gjerne med rådgiving og gjennomføring.

Helt Om Integer Field i Odoo: Full Guide for Utviklere
Dasolo 6. mars 2026
Share this post
Logg inn to leave a comment