Сравнить дату из базы данных с текущей датой и предупредить пользователя, если она опоздала
У меня настроена база данных, я использую Django для бэкенда и React.js для фронта. Это проект для школы, но мне трудно найти информацию о том, как сделать это правильно.
Я хочу взять дату, установленную для inspection_date, и сравнить ее с местным временем, и если местное время больше, чем inspection_date, предупредить пользователя, что он просрочил дату инспекции.
Вот модель моего класса
class Hive(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
hive_number = models.IntegerField()
inspection_date = models.DateField()
Мой сериализатор
class HiveSerializer(serializers.ModelSerializer):
class Meta:
model = Hive
fields = ['id', 'hive_number', 'inspection_date', 'user_id']
depth = 1
Вы можете использовать декоратор @property для выполнения этих действий и установить пользовательскую логику проверки того, прошла ли дата проверки пользователя через сегодняшнюю дату или нет.
Если дата проверки пользователя прошла сегодняшнюю дату, то покажите что-то вроде you are not eligible for inspection, и наоборот.
models.py
from django.db import models
from django.contrib.auth.models import User
from datetime import date
class Hive(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
hive_number = models.IntegerField()
inspection_date = models.DateField()
@property
def eligiblity_for_inspection(self):
current_date = date.today()
if current_date < self.inspection_date:
return True
else:
return False
def __str__(self):
f"Hive number **{self.hive_number}**"
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home')
]
views.py
from django.shortcuts import render
from .models import Hive
def home(request):
all_hives = Hive.objects.all()
context = {
'all_hives': all_hives
}
return render(request, 'home/index.html', context)
файл шаблона или index.html
<body>
{% for hive in all_hives %}
<div class="info">
<p>{{forloop.counter}} record</p>
<p>{{hive.user.username}}</p>
<p>{{hive.inspection_date}}</p>
{% if hive.eligiblity_for_inspection %}
<p>you are eligible for inspection</p>
{% else %}
<p>You are not eligible for inspection</p>
{% endif %}
</div>
<hr>
{% endfor %}
</body>
Это даст желаемый результат, если сегодняшняя дата больше, чем дата проверки, то вы можете показать любое пользовательское сообщение, также в оповещении.