Django:检查今天是否在Datetime Obj的范围内

2024-05-29 05:49:40 发布

您现在位置:Python中文网/ 问答频道 /正文

(Django 1.10,Python 2.7)

我有一个年度车型:

class Year(models.Model):
    start_date = models.DateTimeField()
    end_date = models.DateTimeField()
    election_nomination_start_datetime = models.DateTimeField()
    election_nomination_end_datetime = models.DateTimeField()

我想做一个中间件——我以前从未做过——来检查datetime.today或{}是否在任何年份对象的election_nomination_start_datetime和{}之间的日期范围内;因此,某些页面的可访问性将有所不同。在

我不知道该怎么做,所以我非常感谢你的帮助。 另外,如果可以给出一个例子,说明如何按照我上面描述的方式使用中间件(限制对url的访问等),那对我来说将是非常有益的。在

谢谢。在


Tags: 中间件djangodatetimedatemodelmodelsyearstart
1条回答
网友
1楼 · 发布于 2024-05-29 05:49:40
class Year(models.Model):
    start_date = models.DateTimeField()
    end_date = models.DateTimeField()
    election_nomination_start_datetime = models.DateTimeField()
    election_nomination_end_datetime = models.DateTimeField()
    objects = YearQuerySet().as_manager()


class YearQuerySet(models.QuerySet):

    def occurring_in_day(self, year, month, day):
        try:
            picked_date = datetime.date(year, month, day)
        except (TypeError, ValueError):
            return self.none()

        return self.filter(
            election_nomination_start_datetime__lte=picked_date,
            election_nomination_end_datetime__gte=picked_date,
        )

    def occurring_now(self):
        now = datetime.now()
        return self.filter(
            election_nomination_start_datetime__lte=now,
            election_nomination_end_datetime__gte=now,
        )

然后你可以做一些类似的事情

Year.objects.occurring_now()以获取正在发生的实例

为了让实例在今天发生,请

^{pr2}$

相关问题 更多 >

    热门问题