data = [{'account_type': u'account_type', 'balance': 3484382.4899999998, 'type': 'report', 'name': u'Assets', 'level': 1}, {'account_type': u'liquidity', 'balance': 87301.78, 'type': 'account', 'name': u'100101 Cash', 'level': 4}, {'account_type': u'liquidity', 'balance': 257350.98, 'type': 'account', 'name': u'100201 HDFC Bank', 'level': 4}]
@api.multi
def account_fun():
for item in data:
return item['balance']
我正在使用compute调用该函数并获取预期的单例错误。但我希望将所有余额从数据存储到数据库中逐个存储。在odoo中的account.account表中。
balance = field.Float(string="Balance",compute="account_fun")#creating new balance field.
我该怎么做呢?必须在列表视图中显示余额字段。感谢,
答案 0 :(得分:0)
我不确定你要用这个逻辑做什么,我只是在这里告诉你如何做到这一点。
data = [{'account_type': u'account_type', 'balance': 3484382.4899999998, 'type': 'report', 'name': u'Assets', 'level': 1}, {'account_type': u'liquidity', 'balance': 87301.78, 'type': 'account', 'name': u'100101 Cash', 'level': 4}, {'account_type': u'liquidity', 'balance': 257350.98, 'type': 'account', 'name': u'100201 HDFC Bank', 'level': 4}]
@api.multi
def account_fun(self):
for rec in self:
balance =0
for item in data:
balance += item['balance']
rec.balance = balance
balance = field.Float(string="Balance",compute="account_fun")
您收到此错误,因为在记录集的自我列表中将是 那里。在新的api中,设置功能域有不同的方法 我已在上面描述过。
答案 1 :(得分:0)
@api.multi
def account_fun(self):
data = [{'account_type': u'account_type', 'balance': 3484382.4899999998, 'type': 'report', 'name': u'Assets', 'level': 1}, {'account_type': u'liquidity', 'balance': 87301.78, 'type': 'account', 'name': u'100101 Cash', 'level': 4}, {'account_type': u'liquidity', 'balance': 257350.98, 'type': 'account', 'name': u'100201 HDFC Bank', 'level': 4}]
for rec in self:
for j in range(len(data)):
if rec.code in data[j]['name']:
rec.balance= data[j]['balance']
balance = fields.Float(string="Balance",compute="account_fun")
感谢@Emipro Technologies Pvt。有些什么改变了你的代码得到了我想要的东西。