Модель Django автоматически обновляет статус, когда срок действия лекарства истек
Как автоматически обновить статус лекарства, если срок его годности истек? Например, я создал запись о лекарстве и установил дату истечения срока годности на июль 2022 года, если текущая дата больше даты истечения срока годности, она обновит статус лекарства на "Просрочено", Как мне это сделать?
class Medicine(models.Model):
medstatus = [
("Expired", "Expired"),
("Active", "Active")
]
description = models.CharField(max_length=50, null=True)
expirationDate = models.DateField(null=True)
status = models.CharField(max_length=50, choices=medstatus, null=True)
Создать crontab
для одного раза в день
#this is example for each day 00:00 sending get request to you api
0 0 * * * /usr/bin/curl --silent http://example.com/your_views_url/ &>/dev/null
Это хороший и простой для понимания генератор cronjob:
https://crontab.guru/#0_0_*_*_*
Cronjob запустит представление, которое будет искать лекарство и изменять его статус:
ulrs.py
path("your_views_url", views.your_view_name_here),
views.py
from django.http import HttpResponse
from datetime import datetime
def your_view_name_here(request):
now = datetime.today()
#this will return a queryset of all medecine which you need to change status
all_target_medecine = Medicine.objects.filter(medstatus = "Active", expirationDate__lt = now)
for medecine in all_target_medecine:
medecine.medstatus = "Expired"
medecine.save()
return HttpResponse("Ok")