OpenERP: Простое использование fields.function

Я пытаюсь сделать некоторый расчет полей моего объекта и сохранить их в новом поле. Я начинаю с простого примера использования fileds.function, но когда я пытаюсь войти в openerp, система выдает ошибку, что пользователь или пароль неверны.

в моем классе я добавляю поле:

      'a' : fields.integer('A'),
      'b' : fields.integer('B'),
      'total' : fields.function(fnct, method=True, string='Tot',type='integer'),

определение функции:

       def fnct(self, cr, uid, ids, fields, arg, context):

          x = {}

          for record in self.browse(cr, uid, ids):

              x[record.id] = record.a + record.b

          return x

Пожалуйста, кто-нибудь может мне помочь? спасибо


person Spirit angel    schedule 09.05.2012    source источник


Ответы (2)


Нет соединения функции, зарегистрированной с входом в систему OpenERP.

Поэтому вполне возможно, что вы указываете неправильный идентификатор пользователя или пароль.

Основное использование функционального поля:

Автоматический расчет значения поля на основе других полей.

т.е. Итого = поле1 + поле2 + поле3

Пример: "итого": fields.function(get_total, method=True, string='Total', type='integer'),

Как определить функцию:

def get_total(self, cr, uid, ids, fields, arg, context):

    x={}

    for record in self.browse(cr, uid, ids):

        x[record.id]= record.field1 + record.field2 + record.field3

    return x
person Avadhesh    schedule 10.05.2012
comment
Спасибо Avadhesh за вашу помощь. Но я уверен, что пользователь и пароль верны, потому что, когда я комментирую код с помощью функции, я могу войти в систему. Я попытался вычислить значение поля на основе других полей, как вы сказали, это все еще не работает. не работает! - person Spirit angel; 10.05.2012
comment
Какую ошибку вы получаете? - person Avadhesh; 10.05.2012
comment
когда я вхожу в систему, я получаю Mauvais nom d'utilisateur ou mot de passe, но я уверен, что они верны!! вот моя новая функция 'def fnct(self, cr, uid, ids, fields, arg, context): x = {} для записи в self.browse(cr, uid, ids): x[record.id] = запись .a + record.b вернуть x' - person Spirit angel; 10.05.2012
comment
большое спасибо, я попробовал с новой базой данных, чтобы я мог знать, в чем проблемы. - person Spirit angel; 10.05.2012

Чтобы решить эту проблему, я проверяю некоторые намерения, а также определение моей функции должно быть до объявления полей.

person Spirit angel    schedule 10.05.2012
comment
Поздравляю с исправлением! Когда вы сможете, обязательно пометьте свой ответ как «принятый», чтобы другие могли учиться на вашем решении. Ура~ - person Andrew Kozak; 10.05.2012