使用「NULLS LAST」處理Django 查詢中的NULL 值
在Postgresql 中對模型進行排序通常需要有效地處理NNULL 值。 Django 提供了一個方便的方法將「NULLS LAST」最佳化合併到查詢中,讓您可以控制空值的順序。
考慮以下場景:
問題:
您想要使用Postgresql「NULLS LAST」選項對模型進行排序,以將空值移至有序序列的末端。但是,您嘗試使用extra(order_by=('-price', 'NULLS LAST')) 失敗,並出現錯誤「無法將關鍵字'NULLS LAST' 解析到欄位中。」
解:
要在Django 中實作「NULLS LAST」排序,請使用F 表達式並在欄位表達式的desc() 方法中設定 nulls_last 參數。例如:
MyModel.objects.all().order_by(F('price').desc(nulls_last=True))
此語法利用Django 的表達式API,它允許您使用字段表達式(在本例中為F('price'))構造複雜的過濾器和排序條件,並自訂排序行為使用像nulls_last 這樣的參數。
要注意的是,這個功能是在 Django 1.11 中引入的。請參閱您正在使用的相關版本的 Django 文檔,因為語法或支援的功能可能有所不同。
以上是如何使用 Postgresql 在 Django 查詢中使用 NULLS LAST 進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!