【发布时间】:2011-12-21 21:49:48
【问题描述】:
我正在尝试按日期过滤用户,但直到我在数据库中找到用户的第一个和最后一个日期才能过滤。虽然稍后我可以让我的脚本过滤掉 dups,但我想从一开始就使用 Django 的distinct 来完成它,因为它显着减少了。我试过了
User.objects.values('install_time').distinct().order_by()
但由于install_time 是timestamp,它包括日期和时间(我并不真正关心)。因此,它过滤掉的唯一日期是我们可以检索多个用户安装日期的日期而不是时间。
知道怎么做吗?我正在使用 Django 1.3.1、Postgres 9.0.5 和最新版本的 psycopg2 运行它。
编辑:我忘了添加install_time的数据类型:
install_time = models.DateTimeField()
编辑 2: 以下是 Postgres shell 的一些示例输出,以及我想要的内容的简要说明:
2011-09-19 00:00:00
2011-09-11 00:00:00
2011-09-11 00:00:00 <--filtered out by distinct() (same date and time)
2011-10-13 06:38:37.576
2011-10-13 00:00:00 <--NOT filtered out by distinct() (same date but different time)
我知道Manager.raw,但宁愿用户django.db.connection.cursor 直接编写查询,因为Manager.raw 返回一个RawQuerySet,IMO,这比手动编写SQL 查询和迭代更糟糕。
【问题讨论】:
-
@thatwasbrilliant 这正是我想要的;谢谢!有点奇怪,在 Google 上花了 2 小时却没有结果,在 SO 上只花了 30 分钟。
-
你需要提高你的谷歌技能:)
标签: python django django-models