2016-07-14 2 views
0

Я только начал использовать Odoo и я создаю свой собственный модуль, поэтому я добавил новое поле для продуктов, например:Добавление поля, которое не находится в модели

class ProductTemplate(models.Model): 
    _inherit = 'product.template' 

    netto_price = fields.Float() 

теперь у меня будет несколько дополнительного поля, изменение на основе netto_price и netto_price изменится на их основе. В основном все они рассчитываются из netto_price. Теперь я попытался добавить еще одно поле:

<field name="calculated_price"/> 

Но как его не в модели, он разбился. Итак, любые идеи, как я могу добавить его? Я пробовал с полем ввода (html), но когда я не добавляю режим редактирования, все еще есть поле ввода, которое не то, что я хочу.

ответ

1
from openerp import api 

class ProductTemplate(models.Model): 
    _inherit = 'product.template' 

    netto_price = fields.Float() 
    calculated_price = fields.Float('Calculated price') # or whatever type you want it to be 

    @api.onchange('netto_price') 
    def netto_change(self): 

     return {value: {'calculated_price': self.netto_price}} 

В основном то, что вам нужно сделать, это добавить новое поле calculated, а затем украсить любую функцию, которую вы хотите быть вызваны, когда определенное поле изменяются с api.onchange переходящими в поле, которое вы хотите, чтобы вызвать функцию, первый аргумент, и в этой функции я просто устанавливаю значение calculated_price в значение netto

+0

Итак, это значит, что я должен также сохранить calc_price в базе данных? Нет, я бы просто вычислил его и отобразил? – HyperX

+0

Нет, вам не нужно устанавливать атрибут 'store' в false' calculate_price = fields.Float ('расчетная цена', store = False') – danidee

Смежные вопросы