Odoo13社区版默认数据库设置及数据库选择器配置求助
解决Odoo 13默认选中指定数据库并保留选择器的问题
我之前在Odoo 13里处理过一模一样的需求,你遇到的dbfilter设置不生效的情况,大概率是配置逻辑没搞对,或者没配合必要的参数。下面几个方案都是亲测可行的,你可以挨个试试:
方案一:配置文件快速实现(最简单)
你之前设置dbfilter=database1的问题在于,这个配置是强制只显示database1这一个数据库,相当于直接限制了数据库选择范围,而不是设置「默认选中」。要实现「默认进database1,但仍能切换其他库」,需要同时配置两个参数:
- 打开
odoo.conf,添加以下配置:db_name = database1 dbfilter = .*db_name:指定Odoo默认连接的数据库,用户访问/web时会自动用这个库初始化会话dbfilter=.*:允许显示所有数据库,这样/web/database/selector页面能正常展示你所有的4个库
- 重点:修改完配置后必须重启Odoo服务,不然新配置不会加载生效。
如果这个方案没起作用,检查下启动Odoo时有没有用命令行参数(比如--db-filter或--db-name)覆盖了配置文件的设置——命令行参数优先级比配置文件高,会直接覆盖。
方案二:自定义模块实现重定向(更灵活)
如果配置文件的方式不管用,或者你需要更灵活的逻辑(比如根据用户IP切换默认库),可以写一个极简的自定义模块,让用户访问/web时自动带上指定数据库的参数:
- 创建一个名为
web_default_db的模块,目录结构如下:web_default_db/ ├── __init__.py ├── __manifest__.py └── controllers/ └── main.py - 在
__manifest__.py中填写模块基础信息:{ 'name': 'Web Default Database', 'version': '1.0', 'depends': ['web'], 'author': 'Your Name', 'installable': True, 'auto_install': False, } - 在
controllers/main.py中编写重定向逻辑:from odoo import http from odoo.http import request class WebDefaultDBController(http.Controller): @http.route('/web', type='http', auth="none") def web_client(self, s_action=None, **kw): # 如果没有指定数据库且session中无记录,自动添加db参数 if not kw.get('db') and request.session.db is None: kw['db'] = 'database1' return http.local_redirect('/web', query=kw, keep_hash=True) # 否则走原有的web客户端逻辑 return request.render('web.webclient_bootstrap', qcontext=kw) - 安装这个模块后,用户访问
/web会自动跳转到/web?db=database1,默认进入指定数据库,同时/web/database/selector依然可以正常切换其他库。
方案三:排查缓存问题
有时候配置已经生效了,但浏览器缓存了旧的页面状态,导致看起来没效果。可以:
- 重启Odoo服务后,清空浏览器缓存(Ctrl+Shift+Delete)再重新访问
- 或者用隐私窗口打开网站,测试是否生效
内容的提问来源于stack exchange,提问作者Anirban Dutta
相关产品推荐
相关产品推荐

