【发布时间】:2016-09-20 18:46:31
【问题描述】:
在 Django 中,是否可以根据字段是否为 None 来排序,而不是根据字段本身的值来排序?
我知道我可以将 QuerySet 发送到 python sorted(),但我想将其保留为 QuerySet 以供后续过滤。所以,我更喜欢在 QuerySet 本身中订购。
例如,我有一个终止日期字段,我想先对没有终止日期的字段进行排序,然后我想按不同的字段排序,例如姓氏、名字。
这可能吗,还是我坚持使用sorted(),然后必须使用包含的 id 执行一个全新的查询并在新的 QuerySet 上运行 sorted()?我可以这样做,但不希望浪费开销并使用 QuerySet 的优点,它们在评估之前不会运行。
翻译,假设我的应用程序是employee,我的模型是Employee,并且它具有三个字段“first_name (varchar)”、“last_name (varchar)”和“termination_date”,我该如何从 Django 获取此 SQL(日期)':
SELECT
"employee_employee"."last_name",
"employee_employee"."first_name",
"employee_employee"."termination_date"
FROM "employee_employee"
ORDER BY
"employee_employee"."termination_date" IS NOT NULL,
"employee_employee"."last_name",
"employee_employee"."first_name"
【问题讨论】: