2017-08-08 90 views
1

我有3個對象:Odoo域濾波many2one

class PurchaseRequest(models.Model): 
    _name = 'purchase.request' 

    purchase_request_line = fields.One2many('purchase.request.line', 'purchase_request_id', copy=True) 
    supply_conditions_status = fields.One2many('supply.conditions', 'purchase_id', string='Order',copy=True) 

class SupplyConditions(models.Model): 
    _name = 'supply.conditions' 

    name = fields.Many2one('purchase.request.line', string='Product') 

class PurchaseRequestLine(models.Model): 
    _name = 'purchase.request.line 

    purchase_request_id = fields.Many2one('purchase.request', 'Purchase request') 

使用域我想只過濾這些名稱字段(many2one場)值它被寫入並保存在purchase.request表單purchase_request_line字段中。因爲現在我可以看到這是保存在數據庫中的所有值...

<openerp> 
    <data> 
     <record model="ir.ui.view" id="view_purchase_request_doc"> 
      <field name="name">purchase.request.doc</field> 
      <field name="model">purchase.request</field> 
      <field name="arch" type="xml"> 
       <form string="Purchase Request"> 
        <field name="state" widget="statusbar" statusbar_visible="draft,to_approve_first,approved,rejected,canceled" statusbar_colors="{&quot;approved&quot;:&quot;green&quot;}"/> 
       </header> 
       <sheet> 

          <field name="purchase_request_line" attrs="{'readonly': [('state','not in', ('draft'))]}"> 
           <tree string="Purchase Order Lines" editable="bottom"> 
            <field name="name"/> 
            <field name="quantity"/> 
           </tree> 
          </field> 
        <notebook> 
         <page string="Conditions" attrs="{'invisible': [('state','in', ('draft', 'to_approve_first'))]}"> 
          <field name="supply_conditions_status"> 
           <tree string="Purchase Order Lines"> 
            <field name="name" domain="[('???', '???', '???')]"/> 

           <field name="name" options="{'no_create': True}" domain="[('name', '=', 'product_id')]"/> 

我會試着想象這裏:

enter image description here

我想要在購買須知產品名稱many2one字段我可以過濾並只看到2個項目:item1和item2。

+0

我dnt理解你的問題。 Plz詳細說明...... – user3162878

+0

我更新了我的問題,請檢查一下 – fueggit

回答

0

我有點理解。你可以發佈你所有的3個型號代碼嗎? 或者只是解釋一點。

但我對你有一個小概念。

所以...你需要在* .py一邊創建函數。

Ex。

class PurchaseRequestLine(models.Model): 
    _name = 'purchase.request.line 

    purchase_request_id = fields.Many2one('purchase.request', 'Purchase request', domain=_getfilter) 

    @api.model 
    def _getfilter(self): 
     return [('purchase_request_id', '=', self.env['purchase.request'].search([('name','=',???)]).name)] 

或另一個,因爲我明白你。如果您需要在Many2one字段中輸入時返回所需的結果。

Ex。

@api.model 
def name_search(self, name, args=None, operator='ilike', limit=100): 
    args = args or [] 
    recs = self.browse() 
    if name: 
     recs = self.search(['|', ('purchase_request_id', 'ilike', name), ('name', 'ilike', name), ] + args, limit=limit) 
    if not recs: 
     recs = self.search(['|', ('purchase_request_id', operator, name), ('name', operator, name), ] + args, limit=limit) 
    return recs.name_get() 
+0

我更新了我的問題,請看看它。但正如我看到你理解正確。我喜歡1個示例,但是我沒有這種可能......我需要在supply.conditions名稱字段(產品在表單視圖中)我只能選擇item1,item2(如圖中所示) – fueggit

+0

我需要名稱字段僅獲取以活動purchase.request模型編寫的這些purchase.request.line值。在你的方式我找不到積極的purchase.request模型id – fueggit