【问题标题】:Error: dictionary update sequence element #0 has length 3; 2 is required错误:字典更新序列元素 #0 的长度为 3; 2 是必需的
【发布时间】:2014-12-17 18:17:57
【问题描述】:

执行 onchange...() 函数时出现错误:

File "/opt/odoo/odoo/openerp/models.py", line 5652, in _onchange_eval
    result.setdefault('domain', {}).update(method_res['domain'])
ValueError: dictionary update sequence element #0 has length 3; 2 is required

这是我的代码。我认为错误与域有关:

def onchange_template_id(self, cr, uid, ids, id, context=None):
        print "\n\n on change template global_template_id ", global_template_id
        bom_ids = []
        pd_ids = []
        product_complete = []
        ptemplid = global_template_id
        mbl_obj = self.pool.get('mrp.bom.line')
        id_s = mbl_obj.search(cr, uid,  [('product_id', '=', ptemplid)])
        for rec in mbl_obj.browse(cr, uid, id_s, context=context):    
            bom_ids.append(rec.bom_id.id) 
        mb_obj = self.pool.get('mrp.bom')
        for rec in mb_obj.browse(cr, uid, bom_ids, context=context):    
            pd_ids.append(rec.product_id.id)
        pp_obj = self.pool.get('product.product')
        for rec in pp_obj.browse(cr, uid, pd_ids, context=context):    
            product_complete.append('['+ str(rec.default_code) + ']'+ ' ' + str(rec.name_template))
        print "\n\n bom_ids ", bom_ids
        domain = [('id','=',bom_ids)]
        return {
            'type': 'ir.actions.act_window',
            'name': _('BOM'),
            'res_model': 'mrp.bom',
            'view_mode': 'tree',
            'target': 'new',
            'domain': domain,
               }

【问题讨论】:

    标签: python openerp odoo


    【解决方案1】:

    bom_ids = []

    这是一个列表,意味着会有多个值存在。而您传递的域是

    [('id','=',bom_ids)]

    所以如果我们举个小例子,那么考虑一下 bom_ids = [1,2,3];那么域将是

    域 = [('id','=',bom_ids)] -> [('id','=',[1,2,3])]

    根据 SQL 概念,这是错误的。 id = 将始终具有单一值。对于多个值,您应该使用 inlike

    这里你可以尝试的解决方案是

    域 = [('id','in',bom_ids)]

    希望这会对你有所帮助。

    谢谢。

    【讨论】:

      猜你喜欢
      • 2023-04-06
      • 1970-01-01
      • 2016-02-17
      • 2022-06-27
      • 1970-01-01
      • 2016-06-30
      • 1970-01-01
      • 1970-01-01
      • 2015-02-22
      相关资源
      最近更新 更多