在Django中,是否可以通過字段是否爲None來進行排序,而不是字段本身的值?Django:通過評估日期是否爲空來排序
我知道我可以發送QuerySet到python sorted()
但我想保留它作爲後續過濾的QuerySet。所以,我寧願在QuerySet中訂購。
例如,我有一個termination_date字段,我想先排序沒有terminate_date的字段,然後我想按不同的字段排序,如last_name,first_name。
這是可能的還是我堅持使用sorted()
,然後必須使用包含的ID做一個完整的新查詢並在新的QuerySet上運行sorted()
?我可以做到這一點,但寧願不浪費開銷,並使用QuerySets的美麗,他們不運行,直到評估。我的模型是Employee
,它有三個字段'first_name(varchar)','last_name(varchar)'和'termination_date(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"
令人驚訝的是,我一直與Django合作多年,從未遇到過Case類。非常感謝,非常完美! – Furbeenator
@Furbeenator>這是一個相當新的增加。我認爲Django 1.7,甚至1.8。 djangoproject團隊試圖通過使用可組合的查詢表達式使Django ORM更具表達性來殺死'.extra()'方法。更好的封裝和便攜性。 – spectras
這是有道理的,我不得不承認,自從1.3版本以來,我一直在維護Django,並沒有看過所有已更新的最新的兩個發行說明。對我感到遺憾...... -/ – Furbeenator