From 038b70ac725ce2dbc0e34c735e08822ba489325d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Fri, 29 May 2026 15:31:25 +0800 Subject: [PATCH] =?UTF-8?q?ai=E5=8A=A8=E6=80=81=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_base/models/ir_ui_menu.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/yuthon_base/models/ir_ui_menu.py b/yuthon_base/models/ir_ui_menu.py index a9b78a238..24aff0855 100644 --- a/yuthon_base/models/ir_ui_menu.py +++ b/yuthon_base/models/ir_ui_menu.py @@ -11,7 +11,6 @@ class IrUiMenu(models.Model): string='菜单名拼音', compute='_compute_name_pinyin', store=True, - index=True, ) @api.depends('name') @@ -24,6 +23,23 @@ class IrUiMenu(models.Model): first_letters = ''.join([p[0] for p in pypinyin.pinyin(menu.name)]).lower() menu.name_pinyin = f"{full_pinyin} {first_letters}" + def load_menus(self, debug): + """重写 load_menus,把拼音拼到菜单名后面,让 Ctrl+K 能搜到""" + menus = super().load_menus(debug) + # menus 是 dict 结构 {id: {name, parent_id, children, ...}} + # 遍历所有菜单,把拼音追加到 name 后面 + for menu_id, menu_data in menus.items(): + if not isinstance(menu_data, dict) or not menu_data.get('name'): + continue + name = menu_data['name'] + # 查数据库获取 name_pinyin + if menu_id and isinstance(menu_id, int): + menu_record = self.browse(menu_id).exists() + if menu_record and menu_record.name_pinyin: + # 格式: "通知公告 [tongzhigonggao tzgg]" + menu_data['name'] = f"{name} [{menu_record.name_pinyin}]" + return menus + def name_search(self, name='', args=None, operator='ilike', limit=100): if args is None: args = []