仅查询日期

时间:2017-09-24 16:18:33

标签: python django

In [97]: cust = CustomerProfile.objects.get(pk=100)

In [98]: CustomerProfile.objects.filter(user__date_joined=datetime.datetime(2017, 7, 28))
Out[98]: <QuerySet []>

In [99]: CustomerProfile.objects.filter(user__date_joined=datetime.datetime(2017, 7, 28, 14, 43, 51, 925548))
Out[99]: <QuerySet [<CustomerProfile: George George's customer profile>]>
In [100]: cust
Out[100]: <CustomerProfile: George George's customer profile>
In [101]: cust.user.date_joined
Out[101]: datetime.datetime(2017, 7, 28, 14, 43, 51, 925548)

我不确定为什么它只是在2017/07/28日期工作。为什么只有日期才空?我怎样才能获得仅包含日期而不是所有内容的最后一个查询集datetime.datetime(2017, 7, 28, 14, 43, 51, 925548)

2 个答案:

答案 0 :(得分:1)

您可以使用documentation中的__date,或查看this answer - 有很多很好的解决方案。

答案 1 :(得分:1)

您遇到此问题的原因是您尝试搜索特定的日期时间。这意味着,您正在寻找日期时间的组合。因此,当您创建datetime.datetime对象datetime.datetime(2017, 7, 28)时,基本上创建了一个时间为0小时0分0秒的日期。

为了仅按日期过滤,您可以使用__date属性来比较日期

所以,你的比较看起来像是:

CustomerProfile.objects.filter(user__date_joined__date=datetime.datetime(2017, 7, 28))