2016-04-13 6 views
2

はここに私のクラスです。Openerp:</p> <pre><code>employee_ids = fields.Many2many('hr.employee', string="Empls") status = fields.Selection([ ('draft', 'Draft'), ('done', 'Done'), ]) </code></pre> <p>が、その後fields_view_get方法で私はemployee_idsを反復処理し、各従業員のリストを作りたい:反復Many2Manyフィールド

def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): 
     if context is None: 
      context = {} 
     res = super(help_desk, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar,submenu=False) 
     #here i want to iterate throught employee_ids and make list of each employee 
     for f in res['fields']: 
      if f == 'status': 
       res['fields'][f]['selection'] = #put list here 
     return res 

どうすればいいですか?あなたには、いくつかのロジックを適用したい場合はその下に言及ラインを通過今

 status = fields.Selection([ 
       ('draft', 'Draft'), 
       ('done', 'Done'), 
       ]) 
     partner_id = fields.Many2one(comodel_name='res.partner', string='Partner') 
     employee_ids = fields.Many2many('hr.employee', string="Empls") 

:感謝

+0

を参照することができます「各従業員のリストを作成します?」 – dccdany

+0

私はmany2manyフィールド内の各従業員を繰り返し、例えば各従業員IDをリストに追加します。 –

+0

これは、 ids "をパラメータとして使用して、実際のレコードを反復処理することはできません。また、古いAPIからのものであるため、実際のレコードとしてselfを使用することはできません。 – dccdany

答えて

1

私はhelp_deskモデルを想定していますが3つのフィールドSelection,Many2one and Many2manyを持っています。

fields_get ,fields_view_getのような方法は、フィルタ/ドメインを適用してUIを改善するのに役立ちます。 ので、コードはここにある:

@api.model 
def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):  
    res = super(help_desk, self).fields_view_get(view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu) 
    PartnerObj= self.env['res.partner'] 
    domain = [('phone','!=',False)]# put your domain or just place blank list 
    partners = PartnerObj.search(domain)  
    if partners 
     for field in res['fields']:    
      # if field == 'partner_id':     
      #  res['fields'][field]['domain'] = [('id', 'in', partners.ids)] 
      elif field == 'employee_ids': 
       res['fields'][field]['domain'] = [('id', 'in', partners.ids)] 
      elif field=='status': 
       # Appending the partners in status doesn't making any sense but as per your words "put list here" 
       res['fields'][field]['selection'] = partners and [(partner.id, partner.name) for partner in partners] or [('', '')] 

    return res 

ここで私はMany2one and Many2many上のドメインを入れて、Selectionフィールド内のドメインに基づいて、いくつかの動的なリストを追加しました。

あなたはまた、あなたが何を意味account/models/chart_template.py.

+0

私はpartner_idフィールドを持っていません、あなたはそれをなぜ仮定しますか?この回答は一般的ですが、私の問題には役立ちません。とにかくありがとう –

関連する問題