我正在执行一个查询,使用外键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
.