Django Datetime字段查询-按时间/小时排序



我正在执行一个查询,使用外键Appointment的datetime字段start返回今天安排约会的所有WorkOrder。这是我正在使用的查询,它的工作完全符合预期。

WorkOrder.objects.filter(appointment__start__year=date.today().year, appointment__start__month=date.today().month, appointment__start__day=date.today().day)

我想按日期降序和小时升序排序。我想要的顺序是这样的:

11-May-2014 08:00
11-May-2014 10:00
11-May-2014 12:00
10-May-2014 10:00
10-May-2014 13:00
09-May-2014 15:00
...

我试过用以下命令来排序:

.order_by("-appointment__start", "appointment__start__hour")

,但这会导致以下错误:

FieldError: Join on field 'start' not permitted. Did you misspell 'hour' for the lookup type?

似乎我只能做

.order_by("-appointment__start")

我应该有别的方法来做这件事吗?还是我只能忍受这件事?

你使用的是Django版本吗<1.6 ?因为hour在1.6中添加了datetime字段查找。如果是这样,那么不幸的是,您将无法以这种方式访问hour。但是,您可以使用该方法访问day .

因此,您可以order_by更改为:
.order_by("appointment__start", "-appointment__start__day")

这将首先按日期时间升序排序(这将照顾小时),然后按天降序。

,您可以使用extra()修饰符从日期时间中选择小时并按其排序。下面是一个从日期时间选择月份的示例。然而,由于ForeignKey .

,它将变得更加复杂。

相关内容

  • 没有找到相关文章

最新更新