Hoppa till innehåll

Produktmodellen product.template: Förstå Odoos Produktarkitektur

En komplett guide till Odoos produktmallmodell för utvecklare och funktionella konsulter
10 mars 2026 av
Produktmodellen product.template: Förstå Odoos Produktarkitektur
Dasolo
| Inga kommentarer ännu

Introduktion


I Odoo definierar modeller hur data struktureras och lagras i databasen. Varje bit affärsdata du arbetar med, från försäljningsorder till fakturor till produkter, lever i en modell.


Att förstå Odoo-modeller är avgörande för både utvecklare och funktionella konsulter. Modeller är grunden för Odoos dataarkitektur. De definierar Odoo-fält, relationer och affärslogik. Varje modell i Odoo följer samma mönster.


Denna artikel fokuserar på en av de viktigaste modellerna i Odoo: produkt.template. Oavsett om du bygger anpassade moduler, integrerar externa system eller konfigurerar produktkataloger, kommer du att arbeta med denna modell.

Vad är produkt.template-modellen


Produkt.template-modellen representerar en grupp av liknande produkter som endast skiljer sig åt i några egenskaper, såsom storlek eller färg. Istället för att skapa separata produktregister för varje variation, organiseras produkterna i mallar med varianter.


Denna modell i Odoo används inom Försäljning, Inköp, Lager, E-handel och Tillverkning. När du skapar en produkt i katalogen skapar du en produkt.template-post. När du skapar en kundorder väljer du från produktvarianter som ärver från mallen.


Modellen definieras i produktmodulen. Andra moduler utökar den genom Odoo-modelarv. Försäljning lägger till prissättning och fakturering. Inköp lägger till leverantörshantering. Lager lägger till lageruppföljning. Varje modul lägger till vad den behöver utan att duplicera kärnstrukturen.

Att förstå skillnaden mellan produkt.template och produkt.product är avgörande. Mallen håller gemensamma data. Varianten (produkt.product) håller variant-specifika data som streckkod och SKU.

Nyckelfält i modellen


Här är de viktigaste Odoo-fälten i produkt.template-modellen. Att förstå dessa kommer att hjälpa dig att arbeta effektivt med produkter.


1. namn

Typ: Char. Detta fält lagrar namnet på produkten. Det visas i många Odoo-vyer och är den primära identifieraren för produktmallen.


2. create_date

Typ: Datetime. Lagrar datum och tid när posten skapades. Hanteras automatiskt av Odoo. Användbart för rapportering och granskning.


3. write_date

Typ: Datetime. Lagrar datum och tid för den senaste ändringen. Hanteras också automatiskt. Hjälper till att spåra när data senast uppdaterades.


4. aktiv

Typ: Boolean. Flag för mjuk radering. När False arkiveras posten och döljs från standardvyer. Poster raderas inte fysiskt.


5. sekvens

Typ: Heltal. Visningsordning för sortering. Används i produktlistor och rullgardinsmenyer. Lägre värden visas först.


6. typ

Typ: Val. Produkttyp: Förbrukningsvara, Tjänst eller Lagringsprodukt. Förbrukningsvaror spåras inte i lager. Tjänster har ingen fysisk inventering. Lagringsprodukter spåras i inventeringen.


7. categ_id

Typ: Many2one (product.category). Produktkategori. Styr rapportering, standardvägar och katalogorganisation. Kategorier kan vara hierarkiska.


8. list_price

Typ: Float. Försäljningspris. Används som standard vid skapande av offerter. Kan åsidosättas av prislistor eller variant-specifik prissättning.


9. standard_price

Typ: Float. Kostnadspris. Används för marginalberäkningar och lagervärdering. Påverkar lönsamhetsrapporter.


10. currency_id

Typ: Many2one (res.currency). Valutan för list_price och standard_price. Vanligtvis ärvd från företaget.


11. uom_id

Typ: Many2one (uom.uom). Måttenhet för försäljning. Definierar hur kvantiteter uttrycks (t.ex. Enheter, Kg, Liter).


12. uom_po_id

Typ: Many2one (uom.uom). Måttenhet för inköp. Kan skilja sig från uom_id för konverteringsscenarier.


13. default_code

Typ: Char. Intern referens eller kod. Användbar för extern systemkartläggning och anpassad numrering. Används ofta som SKU.


14. barcode

Typ: Char. Streckkod för skanning. Används i POS, lager och inventering. För varianter är streckkoden vanligtvis på product.product.


15. description

Typ: Char. Intern beskrivning. Synlig endast för interna användare. Används för interna anteckningar om produkten.


16. description_sale

Typ: Text. Försäljningsbeskrivning. Visas på offerter och fakturor. Kan inkludera HTML för formatering.


17. beskrivning_inköp

Typ: Text. Inköpsbeskrivning. Visas på inköpsorder och leverantörsfakturor. Hjälper köpare att kommunicera med leverantörer.


18. försäljning_ok

Typ: Boolean. Indikerar om produkten kan säljas. När False, döljs produkten från försäljnings- och offertformulär.


19. inköp_ok

Typ: Boolean. Indikerar om produkten kan köpas. När False, döljs produkten från inköpsformulär.


20. vikt

Typ: Float. Produktens vikt. Används för fraktberäkningar och logistik. Enhet beror på företagets UoM-inställningar.


21. volym

Typ: Float. Produktens volym. Används för logistik och lagerkapacitetsplanering.


22. produkt_variant_ids

Typ: One2many (product.product). Listan över produktvarianter. Varje variant ärver från mallen.


23. product_variant_count

Typ: Heltal. Antal varianter. Beräknas från product_variant_ids. Används för visning och filtrering.


24. image_1920

Typ: Binär. Produktbild. Odoo lagrar flera storlekar. Används i formulär, rapporter och på webbplatsen.


25. responsible_id

Typ: Many2one (res.users). Den ansvariga användaren. Används för produktförvaltning och aktivitetsuppdrag.


26. company_id

Typ: Many2one (res.company). I flerföretagsinställningar anger detta vilken Odoo-företag produkten tillhör.


27. tax_ids

Typ: Many2many (account.tax). Kundskatter för försäljning. Tillämpas på fakturor och offerter.


28. supplier_tax_id

Typ: Many2many (account.tax). Leverantörsskatter för inköp. Tillämpas på leverantörsfakturor.


29. attribute_line_ids

Typ: One2many. Produktattributlinjer för varianter. Definierar vilka attribut (t.ex. Storlek, Färg) som skapar varianter.


30. route_ids

Typ: Many2many (stock.route). Lagervägar. Bestämmer hur produkten rör sig genom försörjningskedjan (t.ex. Köp, Tillverka på beställning).


31. property_stock_production

Typ: Many2one (stock.location). Produktionsplats för tillverkade produkter. Används när typ är Lagringsbar och rutt inkluderar tillverkning.


32. property_stock_inventory

Typ: Many2one (stock.location). Justeringsplats för lager. Används för lagerinventeringar och korrigeringar.


33. property_valuation

Typ: Val. Lagervärderingsmetod: Automatisk eller Manuell. Påverkar hur kostnaden beräknas.


34. property_cost_method

Typ: Val. Kostnadsmetod: Standard eller FIFO. Bestämmer hur lagervärdet beräknas.


35. property_account_income_id

Typ: Many2one (account.account). Inkomstkonto för försäljning. Används vid fakturering.


36. property_account_expense_id

Typ: Many2one (account.account). Utgiftskonto för inköp. Används vid mottagande av leverantörsfakturor.


37. invoice_policy

Typ: Val. När man ska fakturera: Beställda kvantiteter eller Levererade kvantiteter. Påverkar när intäkter redovisas.


38. expense_policy

Typ: Val. När man ska kostnadsföra: Beställda eller Levererade. Påverkar när kostnader redovisas.


39. service_type

Typ: Val. För tjänsteprodukter: Manuell, Tidsrapport eller Milstolpar. Bestämmer hur tjänster spåras och faktureras.


40. optional_product_ids

Typ: Many2many (product.template). Valfria produkter för merförsäljning. Visas när denna produkt läggs till i en offert.

Hur denna modell används i affärsarbetsflöden


1. Försäljning och Offert

När en säljare skapar en offert väljer de produkter från katalogen. Produktmodellen product.template ger basprodukten. Varianter väljs när produkten har attribut (storlek, färg).


2. E-handel

På webbplatsen ser kunder produktmallar i katalogen. När de klickar på en produkt kan de välja bland varianter. Mallen innehåller den gemensamma beskrivningen och bilder.


3. Inköp och Leverantörer

Inköpsorder och leverantörsfakturor kopplas till product.template. Fältet purchase_ok styr synligheten. supplier_tax_id och uom_po_id påverkar inköpsbeteendet.


4. Lager och Tillverkning

Lagerflyttar och tillverkningsorder refererar till produktvarianter. Mallen definierar rutter, värdering och kostnadsmetod. Lager hålls reda på per variant.


5. Fakturering

Fakturor och räkningar refererar till produktlinjer. Mallen tillhandahåller skatteregler och bokföringskonton. Fakturapolitik avgör när intäkter redovisas.

Hur utvecklare utökar denna modell


Utvecklare utökar product.template med flera mönster. Odoo-modellarv är den huvudsakliga mekanismen.


Modell Arv

Använd _inherit = 'product.template' för att utöka modellen. Detta är Odoo-modellarv i arbete. Lägg till nya Odoo-fält, åsidosätt metoder eller lägg till begränsningar. Den ärvda modellen i Odoo håller dina ändringar i en separat modul för enkla uppgraderingar. När du ärver en modell i Odoo, utökar du den utan att modifiera originalet.


Lägga till Fält

Definiera nya Odoo-fält i din ärvda modell. Använd rätt fälttyp: Char, Many2one, Boolean, Integer, Text, Selection. Tänk på företagsberoende fält för flera företag.


Python Utvidgningar

Åsidosätt create, write eller unlink för att lägga till logik. Använd super() för att anropa originalet. Var försiktig med beräknade fält och deras beroenden.


Odoo Studio

Odoo Studio låter dig lägga till fält utan kod. Bra för snabba anpassningar. För komplex logik eller uppgraderingar är anpassade moduler mer underhållbara.

Bästa praxis


  • Använd template-variant relationen korrekt. Sätt delad data på mallen, variant-specifik data på product.product.
  • Ställ in categ_id för korrekt routing och rapportering. Kategorier driver standardbeteende.
  • Använd default_code för extern systemkartläggning. Håll det unikt när det är möjligt.
  • När du bygger API-integrationer, använd XML-RPC eller JSON-RPC API. Modellen product.template är helt exponerad som en API-modell i Odoo. Kartlägg externa ID noggrant.
  • För anpassade fält, använd x_-prefixet eller ett modulprefix för att undvika konflikter med framtida Odoo-versioner.

Vanliga misstag


  • Skapa duplicerade mallar istället för att använda varianter. Använd attribute_line_ids för produkter som endast skiljer sig i storlek, färg, etc.
  • Blanda ihop product.template och product.product. När du behöver variant-specifik data (streckkod, SKU), använd product.product.
  • Glöm inte att ställa in sale_ok eller purchase_ok. Produkter döljs från formulär när dessa är False.
  • Överskridande av kärnmetoder utan att kalla super(). Detta kan bryta andra moduler eller framtida uppgraderingar.
  • Lägg till obligatoriska anpassade fält utan standardvärden. Befintliga poster kommer att misslyckas med validering vid uppgradering.

Slutsats


Modellen product.template är central för Odoo. Den lagrar produktdefinitioner och delade attribut. Att förstå dess fält och hur moduler utökar den kommer att hjälpa dig att konfigurera, anpassa och integrera Odoo effektivt.


Oavsett om du är en funktionell konsult som kartlägger produktkataloger eller en utvecklare som bygger anpassade moduler, kommer en solid förståelse av product.template att spara tid och förhindra fel.

Kom igång med Dasolo


Dasolo hjälper företag att implementera, anpassa och optimera Odoo. Vi specialiserar oss på API-integrationer och Odoo-utveckling. Vårt team har djup erfarenhet av Odoo:s dataarkitektur och modeller som product.template.


Om du behöver hjälp med din Odoo-implementering, anpassade moduler eller integrationer, är vi här för att hjälpa till. Boka en demo för att diskutera ditt projekt.

Produktmodellen product.template: Förstå Odoos Produktarkitektur
Dasolo 10 mars 2026
Dela detta inlägg
Logga in att lämna en kommentar