2016-12-26 8 views
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(): 
     for item in data: 
      return item['balance'] 

Я вызываю эту функцию, используя вычисление и получая ожидаемую ошибку singleton. но я хочу хранить весь баланс от данных в базе данных по одному. в таблице account.account в odoo.ожидаемая ошибка singleton в виде дерева счетов окуней

balance = field.Float(string="Balance",compute="account_fun")#creating new balance field. 

как я могу это сделать. И показать поле баланса в виде списка. спасибо,

ответ

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 существует другой способ установить функциональное поле , которое я описал выше.

+0

Здесь вы получаете только значение в виде списка (каждая строка), но мне нужно другое значение в строке. например, 3484382,87301.78 – ShivaGuntuku

+0

Вот почему я упоминал сначала, я не понимал, что вы хотите установить в балансе. Если поле баланса функционирует, то как оно должно быть рассчитано, вам нужно указать эту точку. Однако вы никогда не получите данные в списке словаря, как вы описали. –

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. Ltd., некоторые из которых изменили ваш код, чтобы получить то, что я хочу.