Ir al contenido
Menú
Se marcó esta pregunta
3 Respuestas
683 Vistas

I wanted to show the number of days (0 day, -2 days, 3 days etc) for the Integer field "Days Left". 

Assuming today date is 09-06-2025(DD-MM-YYYY), this is how the result is showing up in the view. The problem here is that the result is empty(not showing up) when the dates difference is equal to 0 Day. 

Product Name-----Expiry Date-----Days Left

Product 1 ---------07-06-2025------    -2

Product 2 --------09-06-2025 ------  (empty)

Product 3 ---------12-06-2025 -------   3


Compute function for "Days Left"

class Drug(models.Model):
_inherit = "product.template"

expiry_date = fields.Date(string="Expiry Date")
due = fields.Integer(string="Days Left", compute="_compute_due")

def _compute_due(self):
for record in self:
if record.expiry_date:
fmt = '%Y-%m-%d'
from_date = record.expiry_date.strftime(fmt)
today_date = date.today()
if today_date == record.expiry_date:
record.due = 0
else:
now = today_date.strftime(fmt)
d1 = datetime.strptime(from_date, fmt)
d2 = datetime.strptime(now, fmt)
print(from_date, today_date, now, d1, d2)
record.due = str((d1 - d2).days)
else:
record.due = ""

Thank you for your suggestion!

Avatar
Descartar
Mejor respuesta

Hi,


Change the function as follows,


def _compute_due(self):
for record in self:
if record.expiry_date:
today_date = date.today()
# No need to convert to string and back
delta_days = (record.expiry_date - today_date).days
record.due = delta_days
else:
record.due = 0


Result-



Hope it helps

Avatar
Descartar
Autor Mejor respuesta

Hi, I've changed the code as per your suggestion. But It is still not showing in the list view when Days Left is equal to 0. (View Name : product.template.product.list) (it works fine in the form view, Thanks)

Product Name.    Expiry Date.                   Days Left

Product 1.            14 Jun 2025(Today)           1

Product 2.           13 Jun 2025                      (empty)


Avatar
Descartar
Publicaciones relacionadas Respuestas Vistas Actividad
1
jul 23
3402
4
dic 22
9361
2
abr 21
3447
1
oct 18
4787
1
oct 16
4221