2016-07-18 7 views
0

Ich bin mit diesen Code, das Element entfernen soll, die eine bestimmte Anforderung aus einer Liste treffen, während durchlaufen:Wie zu lösen, Fehler, wenn 'Domäne' in Methode_res: TypeError: Argument vom Typ 'Bool' ist nicht iterierbar?

@api.multi 
@api.onchange('stage_a_id','selection_id','cause_id','location_id','batch_id') 
def _change_domain_causeid(self): 

    if self: 
     self.stage_a_id=self.selection_id.stage_id 
     arrTransferSeed = [] 
     if self.stage_a_id.code == 'PN': 
      batchTransferPn =self.env['estate.nursery.batchline'].search([('batch_id.id','=',self.batch_id.id),('location_id.id','!=',False)]) 
      for a in batchTransferPn: 
       arrTransferSeed.append(a.location_id.id) 
     elif self.stage_a_id.code == 'MN': 
      batchTransferMn = self.env['estate.nursery.transfermn'].search([('batch_id.id','=',self.batch_id.id)]) 
      for b in batchTransferMn: 
       stockLocation = self.env['estate.block.template'].search([('id','=',b.location_mn_id[0].id)]) 
       stock= self.env['stock.location'].search([('id','=',stockLocation.inherit_location_id[0].id)]) 
       idlot= self.env['estate.nursery.batch'].search([('id','=',self.batch_id.id)]) 
       qty = self.env['stock.quant'].search([('lot_id.id','=',idlot[0].lot_id.id),('location_id.id','=',stock[0].id)]) 
       if qty[0].qty > 0: 
        arrTransferSeed.append(b.location_mn_id.id) 
     return { 
      'domain': {'cause_id': [('stage_id.id', '=',self.stage_a_id.id)], 
         'location_id': [('id','in',arrTransferSeed)]}, 
     } 
    return True 

und zeigen Fehler wie folgt aus:

argument of type 'bool' is not iterable odoo 

wie kann Ich habe meine Probleme gelöst?

Antwort

0

Dieser Erreur kommt, wenn Sie eine Funktion mit Nullwerten aufrufen.

so jede Variable überprüfen, ob es einen Wert hat, bevor Sie etwas mit ihm tun:

if variable_name : 
    use_value_ofvariable_name_in_your_code_always_play_safe 

und die Domain sould so aussehen: immer Besetzung int() verwenden, in den Bereichen sicher zu sein.

'domain': {'cause_id': [('stage_id', '=',int(self.stage_a_id.id))], 
         'location_id': [('id','in',arrTransferSeed)]}, 
+0

oke. Ich löste mein Problem, mein Problem, wenn ich readonly_bypass in v9 benutze. und mein Wert mit Kontext nicht in DB gespeichert. und dann meine Funktion zeigt Fehler mit null Wert –

+0

zumindest geben Sie mir eine Stimme lol, ok Sie richtig, wenn Sie ein Feld in der Form realdonly machen, wenn Sie es mit einer Funktion ändern und versuchen, es zu speichern wird es nicht finden, wenn Sie können benutze invisible = "true" anstelle von realdonly unsichtbaren Wert werden gespeichert – Cherif

+0

dieses aa Problem in odoo 9.0 readonly Wert wird nicht gespeichert ich benutze unsichtbar für dieses metter weil ich nicht möchte, dass der Benutzer den Wert – Cherif

Verwandte Themen