Skip to Content

Standardverdi i Odoo-felt: Den Komplett Guiden

Hvordan forhåndsutfylle felt automatisk i Odoo, fra statiske verdier til kontekstbevisste standardverdier og dynamiske beregninger
6. mars 2026 etter
Standardverdi i Odoo-felt: Den Komplett Guiden
Dasolo
| No comments yet

Introduksjon


Hver skjema i Odoo har felt. Noen må fylles ut manuelt hver gang. Men mange felt kan gis en fornuftig standardverdi, slik at brukerne starter med noe nyttig allerede på plass. Standardverdi-mekanismen i Odoo er enkel på overflaten, men har flere lag som er verdt å forstå, spesielt når du konfigurerer eller tilpasser skjemaer for teamet ditt.


Enten du er en forretningsbruker som justerer et felt gjennom Odoo Studio eller en utvikler som jobber med en Odoo-feltveiledning, sparer det tid å vite hvordan standardverdier fungerer og forhindrer den typen stille konfigurasjonsfeil som er vanskelige å diagnostisere senere.


Denne guiden dekker hva standardverdier er i Odoo, hvordan de fungerer på ORM-nivå, når man skal bruke statiske versus dynamiske standardverdier, og hvordan man konfigurerer dem gjennom Odoo Studio eller Python-kode.

Hva er standardverdien i Odoo


I Odoo ORM er en standardverdi det som blir tildelt et felt når en ny post opprettes, før brukeren fyller ut noe. Det er ikke en begrensning. Brukeren kan endre det fritt. Det er rett og slett et utgangspunkt som gjør skjemaet mer nyttig rett ut av boksen.


Parameteret default er tilgjengelig på nesten alle felttyper i Odoo-rammeverket: Char, Integer, Float, Boolean, Date, Many2one, Selection, og andre. Det kan være en enkel verdi, en Python-lambda, eller en metodehenvisning. Alle disse regnes som gyldige standardmekanismer avhengig av bruksområdet.


I Odoo Studio vises standardverdier i feltegenskapspanelet som en enkel inndata. Forretningsbrukere kan sette en statisk standard uten å skrive noe kode. Dette gjør det til en av de mest tilgjengelige måtene å forbedre datakonsistens ved bruk av Odoo Studio-felt, uten at det kreves utviklerinvolvering.


På databasenivå lagres ikke standardverdier i feltsøylen selv. De finnes enten i Python-modelldefinisjonen eller i ir.default-poster i databasen, avhengig av hvordan de ble konfigurert. Når en ny post opprettes, leser Odoo disse standardene og fyller ut skjemaet før brukeren ser det.

Hvordan standardverdien fungerer


Når en bruker åpner et nytt skjema i Odoo, kaller rammeverket default_get() på modellen. Denne metoden samler alle feltsstandarder og returnerer et ordbok som kartlegger feltnavn til deres standardverdier. Skjemaet fyller deretter ut disse feltene før brukeren gjør noe.

Det finnes fire hovedtyper av standardverdier i Odoo, hver som dekker et annet scenario.


Statisk standard

En fast verdi hardkodet i feltdedefinisjonen eller satt gjennom Studio. For eksempel, å sette et Boolean-felt til True som standard, eller et Selection-felt til 'draft'. Dette er den enkleste typen og dekker de fleste hverdagslige bruksområder i en Odoo datamodell.


Dynamiske standarder via Lambda eller Metode

En Python-funksjon eller lambda som kjøres ved oppretting av post. Dette tillater standarder som avhenger av dagens dato, den innloggede brukeren, eller annen tilgjengelig kontekst. For eksempel, å sette den nåværende brukeren som standard ansvarlig person, eller å bruke i dag som standard dokumentdato.


Slik ser statiske og dynamiske standarder ut i en Python-modelldefinisjon, i tråd med den standard Odoo utviklingsmønster:


from odoo import fields, models

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

    # Statisk standard
    x_priority_level = fields.Selection(
        [('low', 'Lav'), ('medium', 'Moderat'), ('high', 'Høy')],
        string='Prioritetsnivå',
        default='medium',
    )

    # Dynamisk standard: nåværende bruker
    x_assigned_by = fields.Many2one(
        'res.users',
        string='Tildelt av',
        default=lambda self: self.env.user,
    )

    # Dynamisk standard: dagens dato
    x_expected_date = fields.Date(
        string='Forventet lukking dato',
        default=lambda self: fields.Date.today(),
    )

Kontekstbaserte standarder

Verdier som sendes gjennom handlingskonteksten ved hjelp av default_field_name konvensjonen. Når du klikker på Opprett fra en relatert post, sender Odoo ofte kontekstverdier som blir standarder for relasjonsfelt. For eksempel, når du åpner en ny oppgave fra et prosjekt, settes prosjektfeltet automatisk. Dette er en del av hvordan navigasjonsflyt fungerer i Odoo-rammeverket, og det drives helt av kontekstnøkler som enhver utvikler eller avansert bruker kan konfigurere.


Brukernivåstandarder via ir.default

Odoo støtter også brukerspesifikke standarder gjennom ir.default poster. En administrator kan konfigurere en personlig standard for et gitt felt på en gitt modell. Når den brukeren oppretter en ny post, får deres personlige standard forrang over standarden på modellnivå. Dette er nyttig i flerbrukermiljøer der forskjellige teammedlemmer har ulike arbeidspreferanser, og det er en av de mindre kjente funksjonene i odoo orm.


Prioritetsrekkefølge

Når flere standardkilder eksisterer for det samme feltet, løser Odoo dem i denne rekkefølgen: brukerspesifikke ir.default først, deretter selskapsnivå ir.default, deretter standarden definert i Python-modellen. Kontekstbaserte standarder som sendes ved kjøring overstyrer også standardene på modellnivå. Å vite denne rekkefølgen hjelper deg å forstå hvorfor et felt kanskje ikke viser verdien du forventer når du åpner et nytt skjema.

Forretningsbrukstilfeller


Standardverdier vises i praktisk talt hver modul i en Odoo-implementering. Her er fem praktiske eksempler fra virkelige forretningsarbeidsflyter.


CRM: Standard Selger på Nye Leads

Når en selger oppretter et nytt lead eller mulighet, blir Ansvarlig-feltet standardisert til den nåværende brukeren. Dette unngår at hvert lead starter uten tildeling og krever manuell attribusjon. Standarden settes med lambda self: self.env.user i modelldefinisjonen. I praksis forbedrer denne lille detaljen CRM-adopsjonen fordi brukerne umiddelbart ser sine egne leads uten ekstra steg.


Salg: Standard Betalingsbetingelser på Bestillinger

Når en salgsordre opprettes for en kunde, blir felt som prisliste og betalingsbetingelser standardisert basert på kundepartnerkonfigurasjonen. En kunde som er satt opp med Net 30 betalingsbetingelser vil ha disse betingelsene forhåndsutfylt på hver ny ordre. Dette reduserer manuelle valgfeil og sikrer at betingelsene som er avtalt med hver kunde blir anvendt konsekvent, selv når forskjellige selgere oppretter ordrene.


Lager: Standard Lokasjoner på Overføringer

Når du oppretter en intern overføring eller lagerjustering, blir kilde- og destinasjonslokasjonsfeltene standardisert til lokasjonene konfigurert i lagerinnstillingene. Lageransatte som alltid jobber innenfor samme sone vil finne den riktige lokasjonen allerede valgt når de åpner en ny overføring. Dette sparer klikk og reduserer risikoen for å velge feil lokasjon under tidspress.


Regnskap: Standardjournal på oppføringer

Når en bruker oppretter en ny kundeinnbetaling eller leverandørfaktura, velger Odoo automatisk den passende journalen basert på oppføringstypen og selskapskonfigurasjonen. En revisor som åpner en ny leverandørfaktura trenger ikke å velge innkjøpsjournalen manuelt hver gang. Standardverdien bestemmes dynamisk fra selskapsinnstillingene, ikke fra en hardkodet verdi, noe som betyr at den forblir korrekt selv om journalene blir omkonfigurert senere.


Prosjekt: Standardfase på nye oppgaver

Når en ny oppgave opprettes inne i et prosjekt, starter den i den første fasen av prosjektets kanban-konfigurasjon. Hvis oppgaven opprettes ved å klikke på en knapp på en spesifikk prosjektpost, fylles kontekstbaserte standardverdier også ut automatisk for prosjektet og noen ganger for den som er tildelt oppgaven. Team som bruker Odoo for prosjektledelse drar nytte av disse standardene fordi det holder nye oppgaver på riktig sted fra det øyeblikket de opprettes, uten noen manuell oppsett.

Opprette eller tilpasse standardverdier


Det er tre hovedmetoder for å sette standardverdier i Odoo, som spenner fra en kodefri klikk-gjennom i Studio til full Python-kontroll i et tilpasset modul.


Bruke Odoo Studio (Ingen kode)

Odoo Studio gir et visuelt grensesnitt for å sette standardverdier på ethvert felt i skjemaene dine. For å sette en standard gjennom Studio:

  • Åpne Studio-grensesnittet på skjemaet du vil endre
  • Klikk på feltet du vil konfigurere
  • I feltets egenskapspanel til høyre, finn feltet for standardverdi
  • Skriv inn eller velg verdien du ønsker som startstandard
  • Lagre og avslutt Studio

Studio lagrer denne konfigurasjonen som en ir.default post i databasen. Den gjelder for hele selskapet med mindre en administrator spesifiserer en brukernivåbegrensning. Denne tilnærmingen fungerer godt for statiske standardverdier på valg, boolske, tegn- og heltallsfelt. For Many2one-felt lar Studio deg velge en eksisterende post fra en nedtrekksliste. Det er en av de mest praktiske bruksområdene for å opprette felt i odoo uten å skrive noe kode.

En ting å huske på: å endre standarden gjennom Studio etter at brukere allerede har opprettet poster oppdaterer ikke de eksisterende postene. Den nye standarden gjelder kun for poster opprettet etter endringen.


Bruke Python i teknisk tilpasning

For teknisk odoo-tilpasning settes standardverdier direkte i feltdefinisjonen inne i Python-modellen. Dette gir full kontroll over statiske verdier, dynamiske lambdas og metodebaserte standarder. Det er den foretrukne tilnærmingen i enhver odoo-utviklingsscenario der standarden avhenger av kjøretidsinformasjon som nåværende bruker, dagens dato eller selskapskonfigurasjon.


Her er et eksempel som viser flere typer standarder du kan legge til i en tilpasset modul:


from odoo import fields, models

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

    # Statisk boolsk standard
    x_requires_review = fields.Boolean(
        string='Requires Review',
        default=False,
    )

    # Statisk valgstandard
    x_delivery_preference = fields.Selection(
        [('standard', 'Standard'), ('express', 'Express')],
        string='Delivery Preference',
        default='standard',
    )

    # Dynamisk standard ved hjelp av en metode
    def _default_note(self):
        return self.env['ir.config_parameter'].sudo().get_param(
            'sale.default_note', default=''
        )

    x_internal_note = fields.Text(
        string='Internal Note',
        default=_default_note,
    )

Dette mønsteret følger den standard odoo python-feltkonvensjonen og fungerer på tvers av alle odoo-felttyper. Den metodebaserte standarden er spesielt nyttig når logikken er mer kompleks enn et enkelt lambda-uttrykk.


Bruke ir.default-poster programmessig

Du kan også opprette eller oppdatere ir.default poster gjennom Odoo XML-RPC API eller innenfor en moduldatafil. Dette er nyttig når du leverer en standardkonfigurasjon som en del av installasjonen av en tilpasset modul. ir.default modellen aksepterer et modellenavn, et felt navn, en verdi, og valgfritt et selskap eller en bruker for å avgrense standarden.


Denne tilnærmingen er mindre vanlig i dag-til-dag utvikling, men dukker opp når man bygger installasjonsklare Odoo-moduler som trenger å konfigurere fornuftige standarder som en del av oppsettet.

Beste praksis for standardverdier i Odoo


Sett standarder på obligatoriske felt

Hvis et felt er obligatorisk, gi det en fornuftig standardverdi der det er mulig. Dette reduserer friksjon og forhindrer lagringsfeil når brukere prøver å sende inn en ny post uten å innse at et felt er påkrevd. Å kombinere required=True med en praktisk standard er et godt mønster på tvers av odoo-datamodellen.


Bruk Lambdas for Datodefauter

Hardkod aldri en dato som en standardverdi. Bruk lambda self: fields.Date.today() slik at standarden alltid er den nåværende datoen i det øyeblikket posten opprettes. En hardkodet dato ville vært feil for enhver post opprettet etter at koden ble skrevet, noe som i praksis betyr at det er feil nesten umiddelbart.


Hold Standardlogikk Lettvekts

Standardfunksjoner kjører under opprettelse av poster, noe som betyr at de kjører hver gang en bruker åpner et nytt skjema. Unngå å gjøre databaseforespørsel, kalle eksterne API-er eller kjøre tunge beregninger inne i standardmetoder. Hold dem raske og enkle. Hvis du trenger noe mer involvert, vurder å bruke et onchange eller et beregningsfelt utløst av et annet felt i stedet.


Bruk Kontekststandarder for Navigasjonsflyter

Når du bygger tilpassede handlinger eller smarte knapper som åpner et nytt skjema, send default_field_name-verdier gjennom handlingskonteksten i stedet for å stole på statiske modellstandarder. Dette er nøyaktig hvordan native Odoo-knapper fungerer og holder Odoo-tilpasningen din i tråd med rammeverkskonvensjonene.


Test Standarder med Flere Brukerprofiler

Dynamiske standarder som refererer til self.env.user eller self.env.company oppfører seg forskjellig avhengig av hvem som er logget inn. Test alltid med minst to forskjellige brukerkontoer, og med forskjellige selskapskonfigurasjoner hvis du kjører et flerselskapsoppsett. Det som fungerer for en administrator, kan gi uventede resultater for en vanlig bruker.

Vanlige fallgruver


Bruke et Mutabelt Objekt som Standard

Dette er den klassiske Python-feilen, og den gjelder også i Odoo-utvikling. Skriv aldri default=[] eller default={} for et felt. Python deler det samme liste- eller ordbokobjektet på tvers av alle instanser, noe som fører til at data blør mellom poster på uventede måter. Bruk en lambda i stedet: default=lambda self: []. Dette oppretter et nytt objekt hver gang en post initialiseres.


Standarder Utløser Ikke onchange

Å sette en standardverdi utløser ikke onchange-metoder. Hvis skjemaet ditt har en onchange på et felt som normalt utløser oppdateringer på andre felt, omgår standarden den kjeden av reaksjoner helt. Brukere vil se den forhåndsutfylte verdien, men ingen av de nedstrøms effektene som onchange normalt ville produsert. Hvis du trenger at onchange skal kjøre ved initialisering, må du kalle den eksplisitt i en tilpasset default_get-overstyring eller håndtere logikken på en annen måte.


Motstridende standardverdier fra ir.default og modelldefinisjon

Hvis du setter en standardverdi både i Python og gjennom Studio eller en ir.default-post, løser Odoo dem med en prioritetsrekkefølge. Posten ir.default har forrang over standardverdien på modellnivå i Python. Dette er en vanlig kilde til forvirring når man feilsøker uventede feltverdier, spesielt etter en Studio-konfigurasjonsendring som stille overskriver noe en utvikler har satt i koden.


Å anta en standardverdi betyr en påkrevd verdi

Et felt med en standardverdi er ikke automatisk påkrevd. Hvis brukeren tømmer feltet, vil det bli lagret tomt. Ikke stol på standardverdien alene for å håndheve datakompletthet. Hvis du alltid trenger en verdi i det feltet, kombiner standardverdien med required=True.


Hardkoding av selskaps- eller brukerpost-ID-er

En standardverdi som default=1 som refererer til en bruker eller et selskap ved hjelp av dens database-ID er skjør. Den vil bryte i ethvert miljø hvor den posten har en annen ID, som praktisk talt hver produksjonsdatabase som ikke ble satt opp identisk med utviklingsmiljøet. Bruk alltid dynamiske referanser: lambda self: self.env.company.id eller lambda self: self.env.ref('module.xml_id').id.

Konklusjon


Standardverdier er en liten, men kraftig funksjon i Odoo-datamodellen. De reduserer manuell datainntasting, veileder brukere mot konsistente valg, og gjør skjemaer enklere å bruke for alle på teamet. Enten du konfigurerer dem gjennom Odoo Studio for en rask kodefri endring eller definerer dem i Python som en del av en teknisk tilpasning, hjelper forståelsen av hvordan standardverdier fungerer deg med å bygge bedre Odoo-implementeringer.


De viktigste punktene å huske på: standardverdier kjøres kun ved oppretting av poster, ikke kontinuerlig. De utløser ikke onchange-metoder. Flere kilder til standardverdier følger en definert prioritetsrekkefølge. Og mutable objekter som lister eller ordbøker bør alltid pakkes inn i en lambda når de brukes som feltstandarder.


Å få standardverdiene riktig er ofte forskjellen mellom et skjema som føles intuitivt og et som skaper friksjon for brukerne hver gang de trenger å opprette en ny post. Det er en liten investering som gir avkastning hver dag.


Hos Dasolo hjelper vi selskaper med å implementere, tilpasse og optimalisere Odoo for å passe deres spesifikke arbeidsflyter. Hvis du trenger hjelp til å konfigurere feltstandarder, bygge tilpassede felt, eller designe en Odoo-datamodell som faktisk fungerer for teamet ditt, vil vi gjerne hjelpe. Ta kontakt med oss og la oss snakke om din Odoo-implementering.

Standardverdi i Odoo-felt: Den Komplett Guiden
Dasolo 6. mars 2026
Share this post
Logg inn to leave a comment