Django根据日期选择一个对象

时间:2012-06-03 00:45:19

标签: django django-models django-views

这让我发疯了。我已经使用了所有的lookup_types,但似乎都没有。

我需要选择两周前从今天开始创建的对象。

这就是我所拥有的:

twoweeksago = datetime.datetime.now() - datetime.timedelta(days=14)
pastblast = Model.objects.filter(user=user, created=twoweeksago, done=False)

模型有一个创建的字段:created = models.DateTimeField(auto_now_add=True, editable=False)

但是我的查询并没有归还所有内容。在您提出之前,是的,数据库中有正确日期的记录。

有人可以就我做错了什么提出建议吗?

由于

1 个答案:

答案 0 :(得分:2)

DateTimeField与DateField非常不同,如果你这样做

twoweeksago = datetime.datetime.now() - datetime.timedelta(days=14)

这将返回今天的日期,小时,分钟,秒减去14天,结果将包括小时分钟等等。所以查询:

pastblast = Model.objects.filter(user=user, created=twoweeksago, done=False)

要找到一个实例是在那个确切的时间内创建的,如果你只想关心这一天,而不是小时,分钟和秒,你可以做类似的事情

pastblast = Model.objects.filter(user=user, created__year=twoweeksago.year, created__month=twoweeksago.month, created__day=twoweeksago.day, done=False)

检查django文档: https://docs.djangoproject.com/en/1.4/ref/models/querysets/#year