2013-02-13 1 views
2

Я учусь разрабатывать модули OpenERP, и одна из вещей, которую мне нужно сделать, - рассчитать среднее значение всех входов от пользователя.Как я могу зацикливать и получать значения полей в OpenERP?

Моя идея заключалась в цикле записи, сохраняя при этом сумму и количество, а затем сделать средний, но я не могу понять, как получить доступ к значению для total поля для каждой записи в таблице sim.students

Вот часть моего кода

def get_text(self, cr, uid, ids, fields, arg, context): 
    result = {} 
    i = 0 
    for id in ids: 
     print self.browse(cr,uid,id,['total']) 
     print id 
     i = i+1 
     print i 

    return result 

но результат печати self.browse(cr,uid,id,['total']) возвращает меня browse_record(sim.student, 3), а не сам общий.

Я знаю, что это должно быть очень просто, но я не могу понять, как добраться до этой ценности.

Любой наконечник высоко ценится

+0

, какой объект является самостоятельным? – Raufio

+0

является частью класса 'class student (osv.osv):' это помогает? – JordanBelf

+0

да. что делает self.browse (cr, uid, id). Что делать? – Raufio

ответ

5

Так это то, что я получил от here:

browse(cr ,uid, select, context=None, list_process=None, fields_process=None) 

где:

cr = database cursor 
uid = user id 
select = id or list of ids 
context = context arguments like lang, time zone 

Он возвращает объект со всеми полями, доступных на точечную нотацию. Таким образом, вы можете сделать что-то вроде:

records = self.browse(cr, uid, ids) 
for rec in records: 
    print rec.total 
    print rec.otherfield 

или, если вам нравится списковые:

records = self.browse(cr, uid, ids) 
totals = [rec.total for rec in records] 
average = sum(totals)/len(totals)