将数据库中的日期与当前日期进行比较,如果晚了则提醒用户

Compare Date from a database to current date and alert user if it's late

我有一个数据库设置,我是后端的运行 Django 和前端的React.js。这是一个学校项目,但我很难找到有关如何正确执行此操作的信息。

我想获取 inspection_date 的日期并将其与当地时间进行比较,如果当地时间大于 inspection_date,则提醒用户他们已经过了检查日期.

这是我的 class 模型

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、vice-versa.

的内容

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>

它将给出所需的输出,如果今天的日期大于检查日期,那么您可以显示任何自定义消息,也在警报中。