subplot python
el elemento#0 de la secuencia de actualizaciĆ³n del diccionario tiene una longitud 3; Se requiere 2 (2)
Este error surgió porque intentaba actualizar el objeto dict
utilizando una estructura de secuencia ( list
o tuple
) incorrecta.
cash_id.create(cr, uid, lines,context=None)
intentando convertir lines
en el objeto dict:
(0, 0, {
''name'': l.name,
''date'': l.date,
''amount'': l.amount,
''type'': l.type,
''statement_id'': exp.statement_id.id,
''account_id'': l.account_id.id,
''account_analytic_id'': l.analytic_account_id.id,
''ref'': l.ref,
''note'': l.note,
''company_id'': l.company_id.id
})
Elimine el segundo cero de esta tupla para convertirlo correctamente en un objeto dict.
Para probarlo tu mismo, prueba esto en la cáscara de Python:
>>> l=[(0,0,{''h'':88})]
>>> a={}
>>> a.update(l)
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
a.update(l)
ValueError: dictionary update sequence element #0 has length 3; 2 is required
>>> l=[(0,{''h'':88})]
>>> a.update(l)
>>>
Quiero agregar líneas al objeto account.bank.statement.line
través de otro objeto, pero recibo este error: "dictionary update sequence element #0 has length 3; 2 is required"
def action_account_line_create(self, cr, uid, ids):
res = False
cash_id = self.pool.get(''account.bank.statement.line'')
for exp in self.browse(cr, uid, ids):
company_id = exp.company_id.id
#statement_id = exp.statement_id.id
lines = []
for l in exp.line_ids:
lines.append((0, 0, {
''name'': l.name,
''date'': l.date,
''amount'': l.amount,
''type'': l.type,
''statement_id'': exp.statement_id.id,
''account_id'': l.account_id.id,
''account_analytic_id'': l.analytic_account_id.id,
''ref'': l.ref,
''note'': l.note,
''company_id'': l.company_id.id
}))
inv_id = cash_id.create(cr, uid, lines,context=None)
res = inv_id
return res
Lo cambié en eso pero luego me encontré con este error:
File "C:/Program Files (x86)/OpenERP 6.1-20121029-003136/Server/server/./openerp/workflow/wkf_expr.py", line 68, in execute
File "C:/Program Files (x86)/OpenERP 6.1-20121029-003136/Server/server/./openerp/workflow/wkf_expr.py", line 58, in _eval_expr
File "C:/Program Files (x86)/OpenERP 6.1-20121029-003136/Server/server/./openerp/tools/safe_eval.py", line 241, in safe_eval
File "C:/Program Files (x86)/OpenERP 6.1-20121029-003136/Server/server/./openerp/tools/safe_eval.py", line 108, in test_expr
File "<string>", line 0
^
SyntaxError: unexpected EOF while parsing
Código:
def action_account_line_create(self, cr, uid, ids, context=None):
res = False
cash_id = self.pool.get(''account.bank.statement.line'')
for exp in self.browse(cr, uid, ids):
company_id = exp.company_id.id
lines = []
for l in exp.line_ids:
res = cash_id.create ( cr, uid, {
''name'': l.name,
''date'': l.date,
''amount'': l.amount,
''type'': l.type,
''statement_id'': exp.statement_id.id,
''account_id'': l.account_id.id,
''account_analytic_id'': l.analytic_account_id.id,
''ref'': l.ref,
''note'': l.note,
''company_id'': l.company_id.id
}, context=None)
return res
Recibía este error cuando estaba actualizando el diccionario con la sintaxis incorrecta:
lineItem.values.update({attribute,value})
en lugar de
lineItem.values.update({attribute:value})