0

这真让我抓狂。我已经使用了所有的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)

但我的查询并没有返回所有内容。在你问之前,是的,数据库中有正确日期的记录。

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

谢谢

4

1 回答 1

3

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

于 2012-06-03T02:38:48.470 回答