ODOO 'function' 对象没有属性 '__getitem__'
ODOO 'function' object has no attribute '__getitem__'
我在获取列表的值时遇到问题:
def _get_state(self, cr, uid, context=None):
idemployee = _default_employee(self, cr, uid, context=None)
# sql = " SELECT id, sequence, name FROM wf_state ORDER BY sequence "
sql = " SELECT C.id AS id, C.sequence, C.name, member_id, name_related AS employee_name, \
B.name AS group_name, C.name AS state_name FROM wf_group_member A \
LEFT JOIN wf_group B ON B.id = A.group_id \
LEFT JOIN wf_process BB ON BB.id = B.process_id\
LEFT JOIN wf_state C ON C.group_id = B.id \
LEFT JOIN hr_employee D ON D.id = A.member_id \
WHERE LOWER(code) = 'ca' AND member_id = %s ORDER BY sequence "
res = []
cr.execute(sql, [(idemployee)])
ardata = cr.fetchall()
for data in ardata:
# res.append((data[1], data[2]))
res.append((data[1], data[2]))
return res
array_state = _get_state
class cashadvance(osv.osv):
_name = 'ga.cashadvance'
_columns = {
'state' : fields.selection(array_state, 'Status', readonly=True, required=True),
}
_defaults={
'state' : array_state[0][0],
}
日志中的错误是:
'state' : array_state[0][0],
TypeError: 'function' 对象没有属性 'getitem_'
请帮我解决这个问题
您打算调用 _get_state
函数。你应该这样做:
array_state = _get_state(args...)
您省略了括号,因此您将函数对象本身分配给了 array_state,而不是分配了 _get_state
.
的返回值
那你居然给函数对象加索引,当然不支持这种操作。支持索引的对象——比如从 _get_state
返回的对象——有一个名为 __getitem__
.
的方法
将您的 _defaults
更改为:
_defaults={
'state' : lambda self, cr, uid, context: array_state(self, cr, uid, context)[0][0],
}
您必须确保结果不为空。
我在获取列表的值时遇到问题:
def _get_state(self, cr, uid, context=None):
idemployee = _default_employee(self, cr, uid, context=None)
# sql = " SELECT id, sequence, name FROM wf_state ORDER BY sequence "
sql = " SELECT C.id AS id, C.sequence, C.name, member_id, name_related AS employee_name, \
B.name AS group_name, C.name AS state_name FROM wf_group_member A \
LEFT JOIN wf_group B ON B.id = A.group_id \
LEFT JOIN wf_process BB ON BB.id = B.process_id\
LEFT JOIN wf_state C ON C.group_id = B.id \
LEFT JOIN hr_employee D ON D.id = A.member_id \
WHERE LOWER(code) = 'ca' AND member_id = %s ORDER BY sequence "
res = []
cr.execute(sql, [(idemployee)])
ardata = cr.fetchall()
for data in ardata:
# res.append((data[1], data[2]))
res.append((data[1], data[2]))
return res
array_state = _get_state
class cashadvance(osv.osv):
_name = 'ga.cashadvance'
_columns = {
'state' : fields.selection(array_state, 'Status', readonly=True, required=True),
}
_defaults={
'state' : array_state[0][0],
}
日志中的错误是: 'state' : array_state[0][0], TypeError: 'function' 对象没有属性 'getitem_'
请帮我解决这个问题
您打算调用 _get_state
函数。你应该这样做:
array_state = _get_state(args...)
您省略了括号,因此您将函数对象本身分配给了 array_state,而不是分配了 _get_state
.
那你居然给函数对象加索引,当然不支持这种操作。支持索引的对象——比如从 _get_state
返回的对象——有一个名为 __getitem__
.
将您的 _defaults
更改为:
_defaults={
'state' : lambda self, cr, uid, context: array_state(self, cr, uid, context)[0][0],
}
您必须确保结果不为空。