2017-08-08 112 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