Сравнить дату из базы данных с текущей датой и предупредить пользователя, если она опоздала

У меня настроена база данных, я использую 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>

Это даст желаемый результат, если сегодняшняя дата больше, чем дата проверки, то вы можете показать любое пользовательское сообщение, также в оповещении.

Вернуться на верх