есть ли способ не вычислять вычисляемое поле до изменения другого поля? - PullRequest
1 голос
/ 01 апреля 2019

если я обновил свой модуль до последней версии, которая содержит этот метод, все цены изменятся на 0? Что я должен сделать, чтобы предотвратить изменение цены, пока я не добавлю какие-либо поправки в среднее поле?

я добавляю вычисляемое поле в шаблон продукта, чтобы вычислить среднее значение для некоторых элементов и отобразить его Также я добавил метод вычисления в поле list_price, чтобы вычислить его со средним значением выше и себестоимостью.

@api.one
@api.depends('item.pro', 'drc.pro', 'dsc.pro', 'org.pro', 'car.pro', 'model.pro', 'year.pro')
def update_bar(self):
        list=[self.item.pro, self.drc.pro, self.dsc.pro, self.org.pro, self.car.pro, self.model.pro, self.year.pro]
        list = [float(x) for x in list if x is not False]
        try:
            self.pro =float(sum(list) / len(list))
        except ZeroDivisionError:
            if self.pro == float("inf") or self.pro == float("-inf") :
                return float('nan')  # or x or return whatever makes sense
            pass

@api.one
@api.depends('pro')
def testprice(self):
    if self.pro != 0 :
        for template in self:
            template.list_price = float(((self.pro + self.ex_pro) * self.standard_price / 100) + self.standard_price)

list_price = fields.Float(string="Price", required=False,compute=testprice)
pro = fields.Float(string="profit mergin", required=False,compute=update_bar,)
ex_pro = fields.Float(string="Extra profit", required=False,placeholder= "%" )
...