2017-07-03 84 views
2

我想在顯示特定類別的產品的側邊欄中創建一個菜單。我正在考慮爲此任務使用過濾器,默認情況下這是設置的。Odoo 10在XML中使用配置值(存儲在ir.values中)

但是,我不知道如何在我的XML域中使用我的配置值。

這裏是我的XML代碼看起來像:

<record id="my_product_search_form_view" model="ir.ui.view"> 
    <field name="name">Products Of My Category Search</field> 
    <field name="model">product.template</field> 
    <field name="inherit_id" ref="product.product_template_search_view" /> 
    <field name="arch" type="xml"> 
     <xpath expr="//search" position="inside"> 
      <filter string="My Category" name="filter_my_categ" domain="[('categ_id','child_of',my_category)]"/> 
     </xpath> 
    </field> 
</record> 

<record id="my_product_action" model="ir.actions.act_window"> 
    <field name="name">Products Of My Category</field> 
    <field name="type">ir.actions.act_window</field> 
    <field name="res_model">product.template</field> 
    <field name="view_mode">kanban,tree,form</field> 
    <field name="context">{"search_default_filter_my_categ":1}</field> 
    <field name="search_view_id" ref="my_product_search_form_view" /> 
</record> 

<menuitem id="menu_my_products" name="Products Of my Category" 
     parent="menu_product" action="my_product_action" 
     /> 

我希望,這將「my_category」與模式「product.template」的ir.values表中的值時,會以某種方式被加入到上下文 - 這是不是這樣&我得到一個Odoo客戶端錯誤NameError:名字「my_category」沒有定義

有誰知道我可以用我的XML視圖中的ir.values表的價值 - 或至少在context或內調用python方法標籤?還是有我的任務的另一個解決方案?謝謝你的幫助!

回答

1

我在odoo v8中試過這個,它適用於我。

首先使用上下文創建沒有域的過濾器。

<filter string="My Category" name="filter_my_categ" domain="[]" context="{'custom_filter':1}"/> 

然後,我繼承了這樣的搜索方法。

def search(self, cr, uid, args, offset=0, limit=None, order=None,context=None, count=False):       
     if context.get('custom_filter',False): 
      state = self.pool.get('ir.values').get_default(cr, uid, 'sale.order', 'dyn_filter') 
      args.append(['state','=',state]) 
     result= super(sale_order_ext, self).search(cr, uid, args=args, offset=offset, limit=limit, order=order, 
      context=context, count=count) 

    return result 

就這樣。 謝謝。

+0

就像一個魅力!謝謝! – IstaLibera

0

除了Odoo8解決方案(發表VIKI Chavada),這裏是Python代碼看起來像Odoo 10 &延長product.template:

class ProductTemplate(models.Model): 
    _inherit = "product.template" 

    @api.model 
    def search(self, args, offset=0, limit=None, order=None, count=False): 
     if self.env.context.get('custom_filter', False): 
      category = self.env['ir.values'].get_default('my.config', 'my_category') 
      args.append(['categ_id', 'child_of', category]) 

     result = super(ProductTemplate, self).search(args=args, offset=offset, limit=limit, order=order, count=count) 

     return result