(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
或datetime.now
是否在election_nomination_start_datetime
和election_nomination_end_datetime
之间的日期范围内任何年度对象;因此,某些页面的可访问性会有所不同。
我不知道如何执行此操作,因此非常感谢任何帮助。 另外,如果可以按照我上面描述的方式(限制对URL的访问等)给出使用中间件的示例,那对我来说非常有用。
谢谢。
答案 0 :(得分:0)
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()
现在正在发生实例
并且今天要发生实例,请执行
today = datetime.today()
day = today.day
month = today.month
year = today.year
Year.objects. occurring_in_day(year, month, day)