Introduktion
I Odoo bestämmer modellerna hur informationen sparas och organiseras i databasen. All affärsdata — från kundkontakter till fakturor och webbinlägg — lever i någon modell.
Modellerna är själva ryggraden i Odos datalager. De beskriver fälten, relationerna mellan poster och den affärslogik som körs. För både utvecklare och funktionella konsulter är det viktigt att förstå modellernas uppbyggnad och arv.
I den här genomgången koncentrerar vi oss på modellen blog.post. Den ligger bakom bloggfunktionaliteten på Odoo-webbplatser — oavsett om du redigerar inlägg i användargränssnittet, publicerar via API eller anpassar visningen i frontend.
Vad är modellen blog.post?
Modellen blog.post svarar för ett enskilt blogginlägg i Odoo. Varje post i tabellen motsvarar en artikel som kan visas på din webbplats.
blog.post ingår i modulen website_blog och samverkar med andra modeller som blog.blog (bloggbehållaren) och blog.tag (för kategorisering). När du skapar eller uppdaterar en artikel i webbgränssnittet så skapas eller ändras motsvarande blog.post-record.
Modellen använder arv från flera mixin-klasser. Till exempel hanteras chatt och följare via mail.thread, och publiceringslogiken via website.published.mixin. Att känna till dessa arv gör det enklare att utöka och felsöka modellen.
blog.post är en permanent lagrad modell (vanlig persistent modell), inte en transient eller abstrakt modell. Inläggen sparas i databasen och kan hämtas via Odoo:s API.
Viktiga fält i modellen
Nedan följer de viktigaste fälten i blog.post — att känna till dem förenklar arbete med innehåll och integrationer.
1. name
Typ: Char. Fältet håller postens titel. Det är obligatoriskt och syns i listvyer, formulär och på webbplatsen. Titeln används också i fliknamn och sökresultat.
2. blog_id
Typ: Many2one (blog.blog). Kopplar inlägget till en specifik blogg. Varje post tillhör exakt en blogg; använd för att dela upp innehåll i sektioner som Nyheter, Produktuppdateringar eller Guider.
3. subtitle
Typ: Char. En kort underrubrik eller slogan som visas under titeln. Bra för läsbarhet och SEO när du vill ge en snabb sammanfattning.
4. content
Typ: Html. Huvudinnehållet i inlägget. Kan innehålla rik text, bilder och Odoo-webbkomponenter — det här fältet lagrar hela artikelns HTML.
5. teaser
Typ: Text. Ett automatiskt genererat utdrag som visas i listor. Fältet är beräknat och skrivskyddat — Odoo hämtar en förhandsgranskning från innehållet.
6. teaser_manual
Typ: Text. Ett manuellt utdrag som ersätter det automatiska. Använd när du vill skapa en skräddarsydd sammanfattning för listningar.
7. author_id
Typ: Many2one (res.partner). Pekar på författaren, kopplat till kontakt- eller användarpost. Visas tillsammans med inlägget och hjälper vid multi-författarsidor.
8. author_name
Typ: Char. Visningsnamn för författaren, ofta ett beräknat fält som faller tillbaka på partnerns namn. Skrivskyddat.
9. author_avatar
Typ: Binary. Författarens avatarbild som kan visas bredvid namnet. Frivilligt fält för visuellt fokus.
10. is_published
Typ: Boolean. Indikerar om inlägget är publicerat på webbplatsen. Fältet är beräknat och skrivskyddat — styrs av website_published.
11. website_published
Typ: Boolean. Det skrivbara fältet för att publicera eller dra tillbaka ett inlägg. Sätt True för att gå live, False för utkast. Påverkar is_published.
12. post_date
Typ: Datetime. Det publicerade datum som visas för besökare. Används för sortering och kan schemaläggas framåt i tiden.
13. published_date
Typ: Datetime. Registrerar när posten faktiskt publicerades. Sätts automatiskt när website_published blir True — värdefullt i analyser.
14. active
Typ: Boolean. Mjuk arkiveringsflagga. När False göms posten från standardvyer utan att tas bort fysiskt, vilket bevarar historik.
15. tag_ids
Typ: Many2many (blog.tag). Taggar för kategorisering och filtrering. Taggar kan organiseras i kategorier för hierarkisk struktur.
16. visits
Typ: Integer. Räknar besök. Skrivskyddat och uppdateras när besökare ser sidan — användbart för att hitta populärt innehåll.
17. website_url
Typ: Char. Den fullständiga URL:en till inlägget på webbplatsen. Skrivskyddat. Formatet följer Odoo:s SEO-mönster med blogg- och post-slugs.
18. cover_properties
Typ: Text. JSON som beskriver hur omslagsbilden ska visas — position, overlay och liknande. Frontend använder dessa inställningar.
19. header_visible
Typ: Boolean. Bestämmer om webbplatsens header visas på inläggssidan — praktiskt för inlägg som ska visas i fullbredd eller inbäddade vyer.
20. footer_visible
Typ: Boolean. Bestämmer om footer visas; ofta används tillsammans med header_visible för visuella varianter.
21. seo_name
Typ: Char. SEO-vänlig slug för URL. Styrs av titeln om den lämnas tom — undvik specialtecken för stabila länkar.
22. website_meta_title
Typ: Char. Meta-titel för sökmotorer och fliknamn. Ett viktigt fält för synlighet i sökresultat.
23. website_meta_description
Typ: Text. Meta-beskrivning som visas i sökresultat. Håll den omkring 150–160 tecken för bästa presentation.
24. website_meta_keywords
Typ: Char. Meta-nyckelord — mindre relevanta idag men används fortfarande i vissa sammanhang.
25. create_date
Typ: Datetime. När posten skapades — hanteras automatiskt av Odoo och används i rapporter och loggar.
26. create_uid
Typ: Many2one (res.users). Användaren som skapade posten. Sätts automatiskt och är skrivskyddat.
27. write_date
Typ: Datetime. Senaste ändringsdatum — automatiskt uppdaterat och viktigt för versionsspårning.
28. write_uid
Typ: Many2one (res.users). Användaren som senast ändrade posten. Skrivskyddat.
29. display_name
Typ: Char. Beräknat visningsnamn som används i Many2one-listor och sökfält. Skrivskyddat.
30. website_id
Typ: Many2one (website). För multiwebbplatser: anger vilken webbplats posten hör till. Om tom kan posten visas på flera webbplatser.
Hur modellen används i affärsflöden
1. Contentmarknadsföring och SEO
Marknadsföringsteam skapar blog.post-poster för att publicera artiklar och optimerar dem med fälten website_meta_title, website_meta_description och seo_name. Huvudtexten lagras i content, medan taggar används för ämnesindelning och filtrering.
2. Flera bloggar på samma site
Företag kan driva flera separata bloggar (t.ex. Nyheter, Produktinfo, Teknik). Varje blog.blog rymmer många blog.post-poster och blog_id knyter ihop dem så besökare kan navigera per blogg eller filtrera på tagg.
3. API-styrt innehåll
Integrationer skapar och uppdaterar blog.post via XML-RPC eller JSON-RPC — vanligt vid migrering från annat CMS, synk mot headless-lösningar eller automatisk publicering från interna system. Odoo:s API exponerar hela modellen för CRUD-operationer.
4. Schemalagd publicering
Ställ post_date i framtiden och sätt website_published till True för att planera publicering. Praktiskt för innehållskalendrar och kampanjer som ska gå live vid ett bestämt tillfälle.
5. Flera författare och samarbete
author_id tillsammans med mail.thread ger stöd för arbetsflöden: tilldelade författare, följare som får aviseringar och chattkommentarer innan publicering för intern review.
Hur utvecklare bygger vidare på modellen
Utvecklare bygger vidare på blog.post med Odoos ärvningsmekanismer och etablerade mönster.
Modellarv
Förläng modellen genom att sätta _inherit = 'blog.post' i ditt modulmanifest. Då kan du lägga till fält, skriva om metoder eller lägga in begränsningar. Håll modifieringar i en separat modul för enklare uppgraderingar och kom ihåg vilka mixins (t.ex. mail.thread, website.published.mixin) som påverkar beteendet.
Lägga till fält
Definiera nya fält med rätt typ (Char, Many2one, Boolean, Integer, Text, Selection). För metadata som lästid eller egna kategorier, lägg till fält och exponerai vyer. Använd x_-prefix för anpassade fält för att undvika krockar vid uppgradering.
Python-utvidgningar
Skriv om create, write eller unlink för att införa egen logik — använd alltid super() för att bevara basbeteende. Var försiktig med fields som website_published och post_date eftersom mixins beräknar värden. Om du behöver anpassa URL-logiken, skriv om _compute_website_url på ett kontrollerat sätt.
Odoo Studio
Odoo Studio är bra för snabba ändringar utan kod, till exempel lägga till ett fält för intern metadata. För mer avancerad logik, integrationer eller kompletta vyer är en egen modul mer hållbart. blog.post är fullt åtkomlig via Odoo:s API.
Rekommenderade arbetssätt
- Ange alltid website_meta_title och website_meta_description på viktiga poster — det hjälper sökmotorerna att förstå och ranka sidan.
- Använd teaser_manual när det automatiskt genererade utdraget inte fångar budskapet. Skräddarsydda teasers ökar klickfrekvensen i listor.
- Sätt seo_name manuellt för prioriterade artiklar och undvik specialtecken som kan skapa brutna länkar.
- När du publicerar via API, skriv alltid till website_published. Förlita dig inte på is_published vid skrivningar eftersom det är ett beräknat fält.
- Använd tag_ids konsekvent för att hålla innehållet strukturerat — skapa och återanvänd taggar för stabil filtrering.
Vanliga misstag
- Att försöka skriva till is_published är ett vanligt fel — fältet är skrivskyddat. Använd website_published för att styra synlighet.
- Glöm inte att ange blog_id — det är nödvändigt för korrekt visning. Inlägg utan bloggtillhörighet kan bli osynliga eller hamna fel.
- Lämna inte website_meta_description tomt. Sökmotorer kan då plocka utdrag slumpmässigt från sidan — skriv en tydlig 150–160 tecken lång beskrivning.
- Att skriva om kärnmetoder utan att anropa super() kan bryta mixin-funktioner som publiceringslogik eller chatt — alltid ringa tillbaka till basimplementeringen när det behövs.
- Skapa inte duplicerade seo_name inom samma blogg. URL-konflikter skapar brutna länkar eller oväntade omdirigeringar — låt Odoo generera eller kontrollera unikheten.
Sammanfattning
blog.post är navet för Odoos bloggfunktion: den sparar artikeln, innehållet, metadata och publiceringsstatus. Kunskap om hur den relaterar till blog.blog och blog.tag gör det lättare att konfigurera, anpassa och integrera bloggmaterial.
Oavsett om du arbetar som funktionell konsult med innehåll eller som utvecklare mot API:et, sparar en god förståelse för blog.post tid och minskar risken för fel.
Behöver du hjälp med din Odoo-implementation?
Dasolo hjälper företag att implementera och optimera Odoo — med särskild erfarenhet av API-integrationer och modellanpassningar som blog.post.
Behöver du hjälp med implementation, egna moduler eller integrationer i Odoo? Vi kan stötta hela vägen från krav till drift. Boka en demo för att diskutera ditt projekt.