Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
2 Trả lời
6690 Lượt xem

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

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

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 

Ảnh đại diện
Huỷ bỏ

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

Câu trả lời hay nhất

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

Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
0
thg 11 21
4197
1
thg 7 21
7224
1
thg 4 17
4399
2
thg 5 22
9778
0
thg 11 21
4055