Django检查来自帖子的日期是否在模型的两个日期之间

时间:2015-10-26 20:26:01

标签: python django

我在Django中并没有真正的经验,但现在我正在尝试使用这样的模型类开发简单的项目:

$colors: (
  #cc6698,
  #0869ad,
  #ff8300,
  #7A86b8,
  #f05133,
  #2aa9e0,
  #71bf45,
  #ef0e39,
  #9e79d7,
);

$color: nth($colors, random(length($colors)));

body {
  color: $color;
}

在视图文件中 - 当我想获取start_time今天,明天或任何其他日期范围(包括小时)的所有对象时,没有问题:

class FacebookEvent(models.Model):
   start_time = models.DateTimeField(null=True)
   end_time = models.DateTimeField(null=True)

但现在我必须检查请求的日期(my_date)是否在模型的start_time和end_time之间。 我只需要做我以前做过的事情,但有点反过来......

花了我几个小时,但我仍然无法找到解决这个问题的任何概念。 有人有任何想法吗?

提前致谢。

4 个答案:

答案 0 :(得分:1)

我不确定我是否理解这个问题。

如果您有模型实例和日期:

首先,您需要将日期转换为datetime.datetime对象

from dateutil.parser import parse
my_date= request.POST.get('my_date','')
mdate = parse(mydate)
  

然后您可以使用mdate进行逻辑比较。即:    mdate> fbEvent.start_time

如果您想要日期之间的模型实例

 mdate = parse(mydate)   
events = FacebookEvent.objects.filter(start_time__gt=mdate, end_time__lt=mdate)

答案 1 :(得分:0)

以下内容可帮助您入门:

# assuming Sample is your model class and sampledate is your column to filter on
samples = Sample.objects.filter(sampledate__gt=datetime.date(2011, 1, 1), sampledate__lt=datetime.date(2011, 1, 31))

答案 2 :(得分:0)

你可以这样做:

from datetime import datetime
my_date= request.POST.get('my_date','') # for eg. 2015-10-26
my_date = datetime.strptime(my_date, "%Y-%m-%d")

events = FacebookEvent.objects.filter(start_time__lt=my_date, end_time__gt=my_date).order_by('start_time')

答案 3 :(得分:0)

此处派对稍晚,但如果您计划经常使用此range功能,我强烈建议您查看新的postgres range fields。它们有很多方便的查询过滤器,可以提供更清晰,更直观的方式来处理范围。