2016-04-13 17 views
2

Hier ist meine Klasse:OPENERP: Iterate Many2Many Feld

employee_ids = fields.Many2many('hr.employee', string="Empls") 
status = fields.Selection([ 
     ('draft', 'Draft'), 
     ('done', 'Done'), 
     ]) 

dann in fields_view_get Methode i durch employee_ids iterieren wollen und eine Liste der einzelnen Mitarbeiter machen.

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 

wie kann ich es tun?

dank
+0

verweisen Was Sie bedeuten „-Liste der einzelnen Mitarbeiter machen?“ – dccdany

+0

Ich meine iterate durch jeden Mitarbeiter in many2many Feld, und zum Beispiel jede Mitarbeiter ID an die Liste anfügen –

+0

Die Sache ist, Sie brauchen etwas, um die active_ids zu bekommen, ich bin nicht sicher, wo ure diese Funktion ausgeführt wird, hat es nicht "ID" oder " IDs "als ein Parameter, so dass Sie nicht den tatsächlichen Datensatz zu iterieren können, plus, es ist von alten API, so dass Sie nicht selbst als den tatsächlichen Datensatz verwenden können. – dccdany

Antwort

1

Ich bin der Annahme, help_desk Modell haben 3 Felder Selection,Many2one and Many2many:

 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") 

Nun, wenn Sie eine gewisse Logik, so gehen Sie durch die unten erwähnt Linien anwenden möchten.

Gut Methode wie fields_get ,fields_view_get helfen Sie uns bei der Verbesserung der Benutzeroberfläche Erfahrung durch die Anwendung der Filter/Domain on Fly. so ist der Code hier:

@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 

hier ich die Domain auf Many2one and Many2many gesetzt haben und eine dynamische Liste auf Domäne innerhalb des Selection Feld basiert hinzuzufügen.

Sie können auch account/models/chart_template.py.

+0

Ich habe kein Partner-ID-Feld, warum würden Sie das annehmen? Diese Antwort ist allgemein, es hilft nicht für mein Problem. Danke trotzdem –

Verwandte Themen