2016-07-18 13 views
0

я бегу этот код, который, как предполагается, чтобы удалить элемент, отвечающий определенное требование из списка во время прохода через него:Как решить, ошибка, если «domain» в методе_res: TypeError: аргумент типа «bool» не является итерируемым?

@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 

и показать ошибку, как это:

argument of type 'bool' is not iterable odoo 

как можно я решил свои проблемы?

ответ

0

Этот erreur приходит, когда вы вызываете функцию с нулевыми значениями.

так что проверить каждую переменную, если она имеет значение, прежде чем сделать что-то с ним:

if variable_name : 
    use_value_ofvariable_name_in_your_code_always_play_safe 

и домен sould выглядеть так: всегда используют литую Int() в доменах, чтобы быть уверенным.

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

описание товара oke. Я решил свою проблему, моя проблема показывается, когда я использую readonly_bypass в v9. и мое значение с контекстом не сохраняется в БД. а затем моя функция, показывающая ошибку с нулевым значением –

+0

, по крайней мере, дала мне голосование lol, хорошо, когда вы делаете поле в форме realdonly, когда вы меняете его значение с помощью функции и пытаетесь сохранить ее, она не найдет ее, если вы сможете use invisible = "true", а не realdonly invisible value хранятся – Cherif

+0

Эта проблема в odoo 9.0 значение readonly не будет сохранено Я использовал невидимый для этого metter, потому что я не хочу, чтобы пользователь обновлял значение – Cherif

Смежные вопросы