Skip to Content
Меню
Вам необхідно зареєструватися, щоб взаємодіяти зі спільнотою.
Це запитання позначене
2 Відповіді
6718 Переглядів

I am trying to compute the days since of a book release date. while creating a new record, the code showing an error.

Something went wrong !
library.book(,).age_days

I would like to solve this problem using filtered(lambda function).

My code:
date_release = fields.Date('Release Date', copy=False)
age_days = fields.Float(string='Days Since Release', compute='_compute_age')

@api.depends('date_release')

def _compute_age(self): #self: library.book(,)

    today = fields.Date.today() #today: 2021-06-16
    for book in self.filtered(lambda x: x.date_release):
    delta = today - book.date_release
    book.age_days = delta.days

Аватар
Відмінити
Найкраща відповідь

if you assign computed filed ' '/0 value to string you will get rid of this ..

in your case write after the today field 

self.age_days = 0


computed fields are make sure that the computed function assign value to field.. because computed function run every time even when record is creating so they create virtual memory for assigning computed value if they fail to assign value it will show warning  like this library.book('memory address here').age_days

for getting rid of this you have assign a value like for int field 0 or for char field empty string 

Аватар
Відмінити

Hi,

Its not neccessary that assigning 0 value should be for the field of the current record.

It can be a empty variable too. ## Kinda proper code

Найкраща відповідь

Hi,

1. Newid error occurs when the compute field is not stored and When creating a record, the records of the recordset will be in memory only. At that time, the id of the record will be a dummy ids of type NewId

2. You need to assign empty Value before the Loop
    All the computed fields need to be assigned an empty value at least and its better if you use @api.mulit()

@api.mulit()
@api.depends('date_release')
def _compute_age(self):
    age_days = 0
    for book in self.filtered(lambda x: x.date_release):
        today = fields.Date.today()
        delta = today - book.date_release
        age_days = delta.days
        book.age_days = age_days

Thanks

Аватар
Відмінити
Related Posts Відповіді Переглядів Дія
0
лист. 21
4236
1
лип. 21
7250
1
квіт. 17
4415
2
трав. 22
9793
0
лист. 21
4071