[{"data":1,"prerenderedAt":331},["ShallowReactive",2],{"navigation":3,"latest-changelog-release":42,"\u002Fblog\u002Fclean-fix-for-the-model-not-in-registry-error-in-odoo-addons":70,"\u002Fblog\u002Fclean-fix-for-the-model-not-in-registry-error-in-odoo-addons-surround":328},[4],{"title":5,"path":6,"stem":7,"children":8,"page":41},"Blog","\u002Fblog","blog",[9,13,17,21,25,29,33,37],{"title":10,"path":11,"stem":12},"Clean Fix for the ‘Model Not in Registry’ Error in Odoo Addons","\u002Fblog\u002Fclean-fix-for-the-model-not-in-registry-error-in-odoo-addons","blog\u002Fclean-fix-for-the-model-not-in-registry-error-in-odoo-addons",{"title":14,"path":15,"stem":16},"From Sales to Production: The Story of a Connected Manufacturing Workflow in Odoo","\u002Fblog\u002Ffrom-sales-to-production-the-story-of-a-connected-manufacturing-workflow-in-odoo","blog\u002Ffrom-sales-to-production-the-story-of-a-connected-manufacturing-workflow-in-odoo",{"title":18,"path":19,"stem":20},"How to Install Odoo 18 Community Edition on Ubuntu Server","\u002Fblog\u002Fhow-to-install-odoo-18-community-edition-on-ubuntu-server","blog\u002Fhow-to-install-odoo-18-community-edition-on-ubuntu-server",{"title":22,"path":23,"stem":24},"How to Properly Backup Your Odoo Instance (Database + Filestore)","\u002Fblog\u002Fhow-to-properly-backup-your-odoo-instance-database-filestore","blog\u002Fhow-to-properly-backup-your-odoo-instance-database-filestore",{"title":26,"path":27,"stem":28},"Launch Your Odoo MVP in Weeks with MoSCoW Prioritization","\u002Fblog\u002Flaunch-your-odoo-mvp-in-weeks-with-moscow-prioritization","blog\u002Flaunch-your-odoo-mvp-in-weeks-with-moscow-prioritization",{"title":30,"path":31,"stem":32},"Managing Users and Groups on Linux: A Practical Guide","\u002Fblog\u002Fmanaging-users-and-groups-on-linux-a-practical-guide","blog\u002Fmanaging-users-and-groups-on-linux-a-practical-guide",{"title":34,"path":35,"stem":36},"Understanding Odoo's Filestore Structure: What’s Inside and Why It Matters","\u002Fblog\u002Funderstanding-odoos-filestore-structure-whats-inside-and-why-it-matters","blog\u002Funderstanding-odoos-filestore-structure-whats-inside-and-why-it-matters",{"title":38,"path":39,"stem":40},"What Is a BoM and How Does It Affect Product Costs?","\u002Fblog\u002Fwhat-is-a-bom-and-how-does-it-affect-product-costs","blog\u002Fwhat-is-a-bom-and-how-does-it-affect-product-costs",false,{"id":43,"title":44,"added":45,"body":50,"date":57,"description":58,"extension":59,"fixed":60,"image":60,"imageAlt":60,"improved":61,"meta":63,"navigation":64,"path":65,"seo":66,"stem":67,"version":68,"__hash__":69},"changelog\u002Fchangelog\u002Fv0.9.1.md","Current website version",[46,47,48,49],"Homepage introducing Koderstory and its work.","Services page for website, business system, and ERP work.","Blog with practical articles.","About page with company information and approach.",{"type":51,"value":52,"toc":53},"minimark",[],{"title":54,"searchDepth":55,"depth":55,"links":56},"",2,[],"2026-10-17","The current pre-1.0 baseline for the Koderstory website.","md",null,[62],"Replaced the About page company information section with a clearer contact call to action.",{},true,"\u002Fchangelog\u002Fv0.9.1",{"title":44,"description":58},"changelog\u002Fv0.9.1","0.9.1","2BmReZMoo2c1JW3Ek64_ZyALBF8Yx8MR4yi8uQnb8SE",{"id":71,"title":10,"author":72,"body":77,"date":323,"description":324,"extension":59,"image":76,"meta":325,"minRead":153,"navigation":64,"path":11,"seo":326,"stem":12,"__hash__":327},"blog\u002Fblog\u002Fclean-fix-for-the-model-not-in-registry-error-in-odoo-addons.md",{"name":73,"to":74,"avatar":75},"Koderstory","https:\u002F\u002Fdevlog.koderstory.com",{"src":76,"alt":73},"\u002Fimages\u002Fkoderstory-avatar.png",{"type":51,"value":78,"toc":319},[79,92,101,104,109,128,131,163,166,173,242,246,249,299,305,315],[80,81,82,83,87,88,91],"p",{},"You build a custom module that extends ",[84,85,86],"code",{},"product.category"," or ",[84,89,90],{},"product.template",", add the Product module as a dependency, and then Odoo stops with an error like:",[93,94,99],"pre",{"className":95,"code":97,"language":98,"meta":54},[96],"language-text","TypeError: Model 'product.template' does not exist in registry.\n","text",[84,100,97],{"__ignoreMap":54},[80,102,103],{},"The Product app may appear installed, but Odoo still has to find and load its source code before it can register those models.",[105,106,108],"h2",{"id":107},"check-the-common-causes","Check the common causes",[80,110,111,112,115,116,119,120,123,124,127],{},"First, inspect ",[84,113,114],{},"addons_path"," in ",[84,117,118],{},"odoo.conf",". If the Community addons directory is missing or ordered incorrectly, Odoo may not load core modules such as ",[84,121,122],{},"product",". Confirm the expected module exists on disk, for example at ",[84,125,126],{},"\u002Fsrv\u002Fodoo_ce\u002Faddons\u002Fproduct",".",[80,129,130],{},"Next, check the custom module manifest. A module that inherits Product models should declare the dependency:",[93,132,136],{"className":133,"code":134,"language":135,"meta":54,"style":54},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","'depends': [\n    'base',\n    'product',\n],\n","python",[84,137,138,146,151,157],{"__ignoreMap":54},[139,140,143],"span",{"class":141,"line":142},"line",1,[139,144,145],{},"'depends': [\n",[139,147,148],{"class":141,"line":55},[139,149,150],{},"    'base',\n",[139,152,154],{"class":141,"line":153},3,[139,155,156],{},"    'product',\n",[139,158,160],{"class":141,"line":159},4,[139,161,162],{},"],\n",[80,164,165],{},"Dependencies tell Odoo which modules must load first. They cannot compensate for an addon folder that Odoo cannot find.",[80,167,168,169,172],{},"Stale ",[84,170,171],{},".pyc"," files from an older build can also make a development or deployment environment behave unexpectedly. Clear compiled files in the affected custom addon directory when you have confirmed they are safe to regenerate:",[93,174,178],{"className":175,"code":176,"language":177,"meta":54,"style":54},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","find \u002Fsrv\u002Ferp\u002Fodoo_addons -name '*.pyc' -delete\nfind \u002Fsrv\u002Ferp\u002Fodoo_addons -type d -name '__pycache__' -exec rm -rf {} +\n","bash",[84,179,180,206],{"__ignoreMap":54},[139,181,182,186,190,193,197,200,203],{"class":141,"line":142},[139,183,185],{"class":184},"sBMFI","find",[139,187,189],{"class":188},"sfazB"," \u002Fsrv\u002Ferp\u002Fodoo_addons",[139,191,192],{"class":188}," -name",[139,194,196],{"class":195},"sMK4o"," '",[139,198,199],{"class":188},"*.pyc",[139,201,202],{"class":195},"'",[139,204,205],{"class":188}," -delete\n",[139,207,208,210,212,215,218,220,222,225,227,230,233,236,239],{"class":141,"line":55},[139,209,185],{"class":184},[139,211,189],{"class":188},[139,213,214],{"class":188}," -type",[139,216,217],{"class":188}," d",[139,219,192],{"class":188},[139,221,196],{"class":195},[139,223,224],{"class":188},"__pycache__",[139,226,202],{"class":195},[139,228,229],{"class":188}," -exec",[139,231,232],{"class":188}," rm",[139,234,235],{"class":188}," -rf",[139,237,238],{"class":188}," {}",[139,240,241],{"class":188}," +\n",[105,243,245],{"id":244},"load-modules-in-the-right-order","Load modules in the right order",[80,247,248],{},"Make sure the core addons path comes before optional Enterprise and custom addon paths. Then restart Odoo and update the dependency and your custom module together:",[93,250,252],{"className":175,"code":251,"language":177,"meta":54,"style":54},"\u002Fsrv\u002Fodoo_ce\u002Fodoo-bin \\\n  -c \u002Fsrv\u002Ferp\u002Fodoo.conf \\\n  -d erp \\\n  -u product,mycustom_categorycode \\\n  --stop-after-init\n",[84,253,254,263,273,283,293],{"__ignoreMap":54},[139,255,256,259],{"class":141,"line":142},[139,257,258],{"class":184},"\u002Fsrv\u002Fodoo_ce\u002Fodoo-bin",[139,260,262],{"class":261},"sTEyZ"," \\\n",[139,264,265,268,271],{"class":141,"line":55},[139,266,267],{"class":188},"  -c",[139,269,270],{"class":188}," \u002Fsrv\u002Ferp\u002Fodoo.conf",[139,272,262],{"class":261},[139,274,275,278,281],{"class":141,"line":153},[139,276,277],{"class":188},"  -d",[139,279,280],{"class":188}," erp",[139,282,262],{"class":261},[139,284,285,288,291],{"class":141,"line":159},[139,286,287],{"class":188},"  -u",[139,289,290],{"class":188}," product,mycustom_categorycode",[139,292,262],{"class":261},[139,294,296],{"class":141,"line":295},5,[139,297,298],{"class":188},"  --stop-after-init\n",[80,300,301,302,304],{},"Review the startup logs to confirm ",[84,303,122],{}," loads before the custom addon. With the path, manifest dependency, and module order aligned, Odoo can register the inherited models before initializing your code.",[80,306,307,308,127],{},"Originally published on ",[309,310,314],"a",{"href":311,"rel":312},"https:\u002F\u002Fdevlog.koderstory.com\u002Fclean-fix-for-the-model-not-in-registry-error-in-odoo-addons",[313],"nofollow","Koderstory Devlog",[316,317,318],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":54,"searchDepth":55,"depth":55,"links":320},[321,322],{"id":107,"depth":55,"text":108},{"id":244,"depth":55,"text":245},"2025-04-22","Troubleshoot missing Odoo models by checking addon paths, dependencies, cached Python files, and module loading order.",{},{"title":10,"description":324},"VyjRGcmQxRfPvLfgzv4skOIYGm9Bgr1uj070rpbyw5c",[60,329],{"title":14,"path":15,"stem":16,"description":330,"children":-1},"How Odoo connects a customer order with inventory, purchasing, and manufacturing so teams can deliver without chasing updates.",1792253290486]