반응형
사전 업데이트 시퀀스 요소 # 0의 길이는 3입니다. 2는 필수입니다.
account.bank.statement.line
다른 개체를 통해 개체에 선을 추가하고 싶지만 다음과 같은 오류가 발생합니다.
"사전 업데이트 시퀀스 요소 # 0의 길이는 3이며 2는 필수입니다."
내 코드는 다음과 같습니다.
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
나는 그것을 변경했지만 다음 오류가 발생했습니다.
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
암호:
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
이 오류 dict
는 잘못된 시퀀스 ( list
또는 tuple
) 구조 를 사용하여 개체 를 업데이트하려고했기 때문에 발생했습니다 .
cash_id.create(cr, uid, lines,context=None)
lines
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
})
이 튜플에서 두 번째 0을 제거하여 dict 객체로 올바르게 변환합니다.
직접 테스트하려면 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)
잘못된 구문으로 사전을 업데이트 할 때이 오류가 발생했습니다.
다음과 같이 시도하십시오.
lineItem.values.update({attribute,value})
대신에
lineItem.values.update({attribute:value})
길이가 같은 튜플에서 dict를 만드는 빠른 방법 중 하나 :
>>> t1 = (a,b,c,d)
>>> t2 = (1,2,3,4)
>>> dict(zip(t1, t2))
{'a':1, 'b':2, 'c':3, 'd':4, }
ReferenceURL : https://stackoverflow.com/questions/14302248/dictionary-update-sequence-element-0-has-length-3-2-is-required
반응형
'programing tip' 카테고리의 다른 글
Google 크롬을 사용하여 HTML 페이지에 포함 된 자바 스크립트 디버깅 및 편집 (0) | 2020.12.31 |
---|---|
getString ()과 getResources.getString ()의 차이점 (0) | 2020.12.31 |
JWT를 사용하여 Asp.net 웹 API에서 인증 구현 (0) | 2020.12.31 |
Bash의 Shellshock 취약성 뒤에있는 동작이 문서화되어 있습니까? 아니면 의도적입니까? (0) | 2020.12.31 |
“C : \ Microsoft.Cpp.Default.props”를 찾을 수 없습니다. (0) | 2020.12.31 |