Настраиваемый модуль OpenERP с объектом-кнопкой

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

from osv import osv

from osv import fields

class test_base(osv.osv):
    _name='test.base'
    _columns={


            'first':fields.integer('First No:'),
            'second':fields.integer('Second No:'),
            'third':fields.integer('Third No:'),    
             }

def get_sum(self, cr, uid, ids,context=None):

     #  please add code here to get sum of 'first' and 'second' and assign to variable 'sum'

    return {'value':{'third': sum }}



test_base()

XML

<button name="get_sum" string="Click on me to get sum " type="object"/>

person user3153567    schedule 13.01.2014    source источник


Ответы (1)


Для вашего кода вы можете сделать что-нибудь

 def get_sum(self, cr, uid, ids,context=None):

    #  please add code here to get sum of 'first' and 'second' and assign to variable 'sum'
    sum = 0.0
    for data in self.browse(cr, uid, ids, context=context):
       sum += data.first + data.second
    self.write(cr, uid, ids, {'third': sum}
    return True

или вы можете сделать третьи поля функциональным полем и получить значение прямо там, не нажимая кнопку

_columns = { 'первый':fields.integer('Первый номер:'), 'второй':fields.integer('Второй номер:'), 'третий': fields.function(_sum, type="float", store =Верно) }

def get_sum(self, cr, uid, ids,context=None):
        res = {}
        #  please add code here to get sum of 'first' and 'second' and assign to variable 'sum'
        sum = 0.0
        for data in self.browse(cr, uid, ids, context=context):
           sum += data.first + data.second
        res[data.id] = sum
        return res

вы не можете использовать этот тип return return {'value':{'therth': sum }} в событии кнопки clicl, он работает только в методе onchange, например, вы устанавливаете onchange для второго поля, поэтому при вводе значение и нажмите вкладку, чтобы изменить значение пожарной установки в третьем поле.

надеюсь, что это поможет

person user1576199    schedule 13.01.2014
comment
Большое спасибо за полную информацию. Я хотел явно использовать событие нажатия кнопки. Еще раз спасибо за быстрый ответ. - person user3153567; 13.01.2014
comment
Добавил скобки в конце и выполнил . он работает нормально. self.write(cr, uid, ids, {'третий': сумма}) - person user3153567; 13.01.2014
comment
один быстрый дополнительный вопрос по этому поводу .... Можем ли мы отключить эту кнопку, когда запись не находится в редактируемом режиме. Сейчас эта кнопка активна, даже если запись не находится в режиме редактирования. - person user3153567; 13.01.2014
comment
‹button name=button_reset_taxes States=draft,proforma2 string=(update) class=oe_link oe_edit_only type=object help=Пересчитать налоги и общую сумму/› вы можете использовать класс здесь это будет делаться, когда редактируется - person user1576199; 13.01.2014
comment
Еще раз спасибо!. Я добавил class=oe_link oe_edit_only, и он работает нормально. Однако я столкнулся с другой проблемой, когда кнопка была заменена на ссылку (ранее кнопка отображалась, теперь та же кнопка не отображается, вместо этого отображается ссылка. ‹button name=my_button_display string=Display class=oe_link oe_edit_only type=object /› - person user3153567; 13.01.2014
comment
привет, тогда удалите oe_lin из class=oe_link oe_edit_only и напишите как ‹button name=my_button_display string=Display class=oe_edit_only type=object /› - person user1576199; 15.01.2014