Skip to Content

Relaterte felt i Odoo: Den komplette guiden

En praktisk innføring i Odoos Related-felt: hva det gjør, når du bør bruke det, og hvordan du setter det opp i både Studio og Python
6. mars 2026 etter
Relaterte felt i Odoo: Den komplette guiden
Dasolo
| No comments yet

Innledning


Hvis du har jobbet med Odoo-modellen en stund, har du sikkert ønsket å vise informasjon fra et tilknyttet objekt direkte i et skjema — uten at brukeren må åpne en lenke til et annet register. Related-feltet er Odoos enkle løsning for å hente frem slik kontekst på en deklarativ måte.


I stedet for å lage en beregnet verdi med et Python-metodekall, lar et Related-felt deg følge en eksisterende relasjonskjede og vise verdien som ligger i enden. Det er et praktisk verktøy både for utviklere og for konsulenter som bruker Odoo Studio, når man vil vise relevant informasjon uten å skrive kode.


Denne guiden beskriver hva et Related-felt egentlig representerer, hvordan det opererer i Odoo-rammeverket, hvordan du oppretter og konfigurerer det via Studio eller kode, og hvilke arbeidsprosesser i praksis som drar nytte av det.

Hva er et Related-felt i Odoo


I Odoo-ORM-en er ikke Related et eget grunnleggende felttype-slag som Float eller Char. Tenk på det som en snarvei: det eksponerer et felt fra en annen modell ved å følge en kjede av relasjonsfelt. Typen på Related-feltet blir bestemt av feltet du peker på i enden av kjeden.


Et enkelt scenario: salgordren har feltet partner_id (Many2one til res.partner). Et Related-felt satt til related='partner_id.country_id' gjør kundens land synlig på salgordren uten å lage en egen kopi i salgordren.

For sluttbrukeren oppfører et Related-felt seg som ethvert annet felt i skjermbildet. Sluttfeltet styrer hvordan det vises: tekstfelt for Char, nedtrekksliste for Many2one, avhukingsboks for Boolean – Related-feltet arver den visuelle framstillingen til feltet det speiler.


Som standard er Related-felt lese-only og ikke lagret i databasen. Det betyr at det alltid viser gjeldende verdi fra kilderegistret, men du kan ikke bruke det i databasefiltre eller søk uten å sette store=True.


I Odoo Studio finnes Related-felt som et valg når du legger til nye felt i et skjema. Du velger en eksisterende relasjonsvei, og Studio oppretter feltet med passende innstillinger — et kjapt alternativ for konsulenter som vil utvide skjemaer uten programmering.

Hvordan feltet fungerer


Når Odoo leser et Related-felt, går det gjennom feltnavn separert med punktum. Hvert steg bortsett fra det siste må være et relasjonsfelt (Many2one, One2many eller Many2many). Det siste leddet kan være en hvilken som helst felttype.


Her er et konkret eksempel på hvordan du definerer et Related-felt i en Python-modul:


from odoo import fields, models

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

    partner_country_id = fields.Many2one(
        related='partner_id.country_id',
        string='Customer Country',
        store=True,
    )

I dette eksempelet følger Odoo partner_id for å finne res.partner-posten og leser deretter country_id. Resultatet blir et Many2one-felt på salgordren som speiler kundens land.


Lagret kontra ikke-lagret Related-felt

Dette er en viktig forskjell: som standard har Related-felt store=False, altså beregnes verdien ved lesetid og ligger ikke i modellens databaserad.


Med store=True skriver Odoo verdien til en kolonne når kilden endres. Da kan du filtrere, gruppere og søke på feltet i SQL-spørringer — nyttig for rapporter og listetabeller.


Ulempen er at lagrede Related-felt tar plass i databasen og krever oppdatering når kildefeltet endres. Odoo håndterer avhengigheter automatisk, men for store datamengder og hyppige endringer bør du vurdere ytelsespåvirkningen.


Lese-only kontra skrivbare Related-felt

Som standard er Related-felt skrivebeskyttet. Setter du readonly=False blir feltet redigerbart, og endringer blir skrevet tilbake langs kjeden til kilderegistret. Det betyr at redigering av feltet på et salg-dokument faktisk oppdaterer kundeposten — en sterk, men potensielt overraskende effekt.


Bruk skrivbare Related-felt kun når du med vilje ønsker at endringer skal propagere til kilden. I enkelte situasjoner kan det være nyttig, for eksempel for raske endringer i listevisning, men det kan også føre til utilsiktede oppdateringer hvis brukerne ikke skjønner hva de endrer.


Viktige feltegenskaper

Her er de viktigste parameterne du setter på et Related-felt:

  • related: Punktumseparert kjede med feltnavn (f.eks. 'partner_id.country_id'). Dette er det eneste påkrevde attributtet.
  • store: Sett til True hvis du vil persistere verdien i databasen. Aktiverer filtrering og gruppering.
  • readonly: Sett til False for å la brukere redigere feltet, da skrives verdien tilbake til kilden.
  • string: Etikettnavn som vises for brukeren. Standard er etiketten fra terminalfeltet.
  • depends: Vanligvis unødvendig, siden Odoo avleder avhengigheter fra related-kjeden automatisk. Benyttes kun i spesielle tilfeller.

Slik samhandler det med Odoo-ORM-en

Når du leser et Related-felt returnerer det terminalfeltets verdi fra den koblede posten. Hvis et steg i kjeden er tomt (for eksempel partner_id ikke satt), gir Related-feltet False. Dette er standard oppførsel i Odoo for relasjoner.


Related-felt kan brukes i domener, visninger og rapporter når de er lagret. Ulagrede Related-felt kan vises i skjema og liste, men kan ikke brukes som søkekriterium i SQL-domener med mindre serveren evaluerer dem i Python.

Forretningsscenarier


Related-felt brukes i mange deler av en Odoo-implementasjon. Nedenfor er fem konkrete eksempler fra praktisk bruk.


CRM og salg: kundetelefon på salgsordrer

Salgsteam vil ofte se kundens telefonnummer direkte på salgordren uten å åpne kundekortet. Et Related-felt satt til related='partner_id.phone' viser nummeret i konteksten, gjør oppfølging raskere og krever ingen kode. I Studio kan en konsulent legge dette til på under ett minutt.


Regnskap: selskapsvaluta på fakturalinjer

I oppsett med flere selskaper trenger regnskapsførere noen ganger å se selskapsvalutaen på fakturalinjer for tydelig rapportering. Et Related-felt som related='move_id.company_id.currency_id' følger to Many2one-steg og eksponerer valutaen. Slike kjeder er gyldige, men hold kjedene korte for bedre ytelse. Med lagring kan du filtrere fakturaer etter valuta i analyzerapporter.


Lager: produktkategori på flyttelinjer

Lagerpersonell ønsker ofte å se produktkategori på flyttelinjer uten å åpne produktkortet. Et Related-felt fra stock.move.line til product_id.categ_id viser kategorien direkte. Med store mengder data er det praktisk å sette store=True for å kunne gruppere og rapportere etter kategori.


Produksjon: intern referanse på arbeidsordrekomponenter

I produksjon trenger operatører ofte å se produktets interne artikkelnummer på arbeidsordrelinjer. Et Related-felt til product_id.default_code på mrp.workorder-linjer plasserer referansen der den trengs, og reduserer feil ved valg av like deler.


Timelister og prosjekter: ansattes avdeling

Prosjektledere som analyserer timelister trenger ofte å vite hvilken avdeling den ansatte hører til for kostnadsfordeling. Et Related-felt related='employee_id.department_id' på account.analytic.line viser avdelingen på timelinjen. Lagret med store=True muliggjør filtrering av timelister etter avdeling i prosjektanalyse.

Opprette eller tilpasse Related-felt


Tre måter å legge til et Related-felt på


Avhengig av teknisk rammeverk og hvordan løsningen driftes, finnes det tre hovedmetoder for å opprette Related-felt.

Bruke Odoo Studio (uten kode)

  1. Odoo Studio gjør det enkelt å legge til Related-felt uten Python. Slik gjør du det:
  2. Åpne Odoo Studio fra hovedmenyen.
  3. Gå til skjemaet der du vil legge til feltet.
  4. Klikk på Legg til felt og velg Related Field.
  5. Klikk deg gjennom relasjonsstiene for å velge ønsket felt.
  6. Gi feltet et navn og angi om det skal være lagret eller skrivebeskyttet.

Lagre og lukk Studio.


Studio oppretter feltet med prefiks x_studio_ og legger det i visningen. Dette er en rask måte å berike skjemaer uten å gjøre endringer i modulkodene.

Definere feltet i Python i en tilpasset modul


For utviklere som jobber med kode, defineres Related-felt i modellklassen — anbefalt for versjonsstyring og flermiljø-distribusjon:

from odoo import fields, models class StockMoveLine(models.Model): _inherit = 'stock.move.line' product_category_id = fields.Many2one( related='product_id.categ_id', string='Product Category', store=True, )


Etter å ha definert feltet, legg det til i relevant view-XML slik at det vises i brukergrensesnittet. Odoo oppretter databasetabell-kolonnen automatisk ved installasjon eller oppgradering av modulen — dette er standard fremgangsmåte for vedvarende tilpasninger.

Opprette via XML-RPC API

I automatiserte utrullinger kan Related-felt også opprettes via XML-RPC ved å angi 'related'-attributtet i feltdefinisjonen:

Når du oppretter et Related-felt gjennom API-et må du eksplisitt oppgi ttype og relation, siden API-et ikke automatisk utleder dem fra kjeden på samme måte som Python-ORM-en gjør. Dette er ofte brukt i fjernstyrte konfigurasjons-skript.

Beste praksis


1. Lagre feltet når du trenger filtrering eller gruppering

Hvis brukerne skal filtrere eller gruppere på feltet i lister eller pivoter, må du sette store=True. Uten det kan ikke databasen utføre effektive søk, og Odoo må laste alle poster i Python for å filtrere, noe som skalerer dårlig. For rene visningsfelter i skjema er ikke-lagret ofte tilstrekkelig.


2. Hold relasjonskjeden så kort som mulig

Korte kjeder som partner_id.country_id er enkle og raske. Lange kjeder som picking_id.sale_id.partner_id.country_id øker risikoen for feil og vedlikeholdsproblemer. Ved veldig dype avhengigheter kan en beregnet feltfunksjon i Python være et bedre og mer robust valg.


3. Vær klar over hva readonly=False betyr

Et skrivbart Related-felt skaper ikke en lokal kopi — det oppdaterer kilden. Hvis du gjør partner_id.phone redigerbar på salgordren, påvirker endringen kundeposten i res.partner og dermed alle tilknyttede dokumenter. Sørg for at dette er ønsket oppførsel og informer brukerne.


4. Bruk Related-felt til visning, ikke til duplisering av data

Related-felt skal gi kontekst, ikke være en uavhengig kopi som kan utvikle seg forskjellig. Når du trenger en verdi som skal kunne avvike fra kilden, bruk et ordinært felt med verdiforslag via onchange eller automatisering i stedet for et lagret, skrivbart Related-felt.


5. Sjekk tilgangsrettigheter

Et Related-felt leser gjennom andre modeller. Hvis en bruker ikke har leserett til en mellomliggende modell, kan feltet fremstå som tomt. Dette er sikker oppførsel i Odoo, men kan forvirre brukere — kontroller at nødvendige roller har tilgang til alle modeller i kjeden.

Vanlige fallgruver


Filtrering på et ikke-lagret Related-felt

Dette er en vanlig feil: man legger et Related-felt i en listevisning og forsøker å bruke det som søkefilter. Med store=False kan ikke databasen filtrere på feltet, og domenet vil enten feile eller gi tomt resultat. Sett store=True for felt du planlegger å bruke i søk eller gruppering.


Uventet skriving tilbake til kilden

Å gjøre et Related-felt redigerbart uten å forstå at endringer oppdaterer kilden er en hyppig kilde til overraskelser, spesielt når felt opprettes i Studio av brukere uten teknisk bakgrunn. Bekreft alltid med forretningssiden før du tillater redigering.


Håndtering av tomme mellomledd

Hvis et mellomledd i kjeden er tomt, returnerer Related-feltet False og vises som tomt i skjemaet. I beregninger eller Python-logikk må du håndtere denne False-verdien for å unngå TypeErrors — en lett oversett feil under test når alle data ser komplette ut, men som dukker opp i produksjon.


Når en beregnet feltlogikk er mer riktig

Related-felt passer når du speiler ett enkelt felt gjennom en relasjonskjede. Når du trenger transformasjon, betingelser eller mer kompleks logikk, er en beregnet (computed) feltmetode i Python det riktige valget. Å presse feltlogikk inn i Related-kjeder fører ofte til skjøre og vanskelige løsninger.


Ytelsesproblemer med mange lagrede Related-felt på store modeller

Hvert lagret Related-felt krever oppdatering når kilden endres. Om du legger ti slike felt på en modell med hundretusener av rader, og kildefeltene endrer seg ofte, kan dette skape betydelig skrivebelastning. For storskala-implementasjoner bør du måle og prioritere ustorade visningsfelt når sanntidsnøyaktighet ikke er kritisk.

Oppsummering


Oppsummering av nytteverdien


Related-felt er et praktisk verktøy i Odoo for å vise kontekstuell informasjon uten å kopiere data. De lar deg lese gjennom relasjoner, vise felt fra tilknyttede poster i alle visninger og lagre dem ved behov for rapportering og filtrering. Å vite når du skal bruke store=True, readonly=False og hvordan håndtere tomme ledd, sparer tid og reduserer feil i implementasjonen.

Hvis du bygger eller utvider Odoo-datamodellen, bør Related-felt være en del av verktøykassa di sammen med computed-fields, Many2one-felt og andre felttyper.

I Dasolo hjelper vi selskaper med å implementere, tilpasse og optimalisere Odoo innen salg, drift, regnskap og mer. Trenger du støtte til å designe datamodellen, legge til felter i arbeidsflytene eller utvikle vedlikeholdbar kode, kan vi bistå. Ta kontakt med oss så tar vi en prat om hvordan vi kan støtte ditt Odoo-prosjekt.

Relaterte felt i Odoo: Den komplette guiden
Dasolo 6. mars 2026
Share this post
Logg inn to leave a comment