This question has been flagged
1 Reply
11957 Views

Hello,

I am trying to compute a value for a field and store the value in the DB. If I remove the store=True everything seems fine, but when I add the parameter, isntead of showing the resul from the function I simply get a 0 in all my fields.

Why can this be? Why is adding store=True changing my values to 0?

Any tip will be appreciated,

Thanks

 

EDIT: 

    @api.one
    def _compute_fats(self):

        for record in self:
            fats = 0
            fats_id = record.name.id
            get_detail = self.env['trackfood.foods'].search([['id', '=', fats_id],])
            for record2 in get_detail:
                fats = record2.fats

        self.fats = fats
 

fats = fields.Float(compute='_compute_fats', string="Fat" , store=True)

EDIT 2:

I found out that _compute_fats is not even getting triggered when store=True, when I remove it, it works fine, but I need to store the values in the DB for charting porposes. 

Avatar
Discard
Best Answer

fats = fields.Float(compute='_compute_fats', string="Fat" , store=True, default=False)

@api.one

@api.depends('name', 'name.fats')
    def _compute_fats(self):

        self.fats = self.name.fats

Avatar
Discard
Author

Unfortunately the code produces the same result. I even uninstalled the module and installed it again and it looks like _compute_fats , what should I be looking at for the cause of the error? Any idea? Thanks for all your help by the way.

update my code, change '' by False for last line and add default=False to the field, but you should delete column fats update the module and verify.

Author

Indeed with your edit I was able to make it work. Thanks a lot for your time.

good news, bye