美文网首页
odoo实现产品分类自动生成二级菜单

odoo实现产品分类自动生成二级菜单

作者: 飞剑灵隐 | 来源:发表于2019-12-12 17:47 被阅读0次

需求:之前做过的产品查询系统,需要有很多产品分类。odoo的菜单无法将每个分类自动显示在菜单上,所以只能手动创建与产品分类名称相同的二级菜单绑定动作。无法实现自动化和通用化。

思路:我的理解,odoo一切都是记录,菜单也是存到数据库的记录

创建分类的时候 同步创建动作和菜单 ,废话不多说,上代码:

    name = fields.Char(string='Name')
    parent_id = fields.Many2one('product.search.category', string='Parent Category')
    chlid_ids = fields.One2many('product.search.category', 'parent_id', string='Chlid Cat')

    
    @api.model
    def create(self, values):
        res = super(ProductSearchCategory, self).create(values)
        res._create_menu()
        return res

    def _create_menu(self):
        action = self._create_action()
        parent_id = self.env.ref('product_search.menu_product_search_list').id
        menu_model = self.env['ir.ui.menu']
        if self.parent_id:
            parent = menu_model.search([
                ('name', '=', '%s_menu' % self.parent_id.name)
            ])
            if parent:
                parent_id = parent[0].id
            else:
                raise UserError(u'不存在父级分类的菜单!')
        menu_model.create({
            'name': '%s_menu' % self.name,
            'action': '%s,%s' % (action._name, action.id),
            'parent_id': parent_id
        })

    def _create_action(self):
        action = self.env['ir.actions.act_window'].create({
            'name': '%s_action' % self.name,
            'res_model': 'product.search.product',
            'context':{'defaut_category_id': self.id},
            'domain': [('category_id', '=', self.id)],
        })
        return action 

相关文章

网友评论

      本文标题:odoo实现产品分类自动生成二级菜单

      本文链接:https://www.haomeiwen.com/subject/dtstnctx.html