Django ORM 中將字元欄位強制轉換為整數
使用Django ORM 查詢時,可能會遇到需要強制轉換字元欄位的場景為一個整數。當欄位儲存為 CharField 但您想要使用整數值執行計算或比較時,可能會發生這種情況。
為什麼 CAST 不可用?
在早期版本的對於這種情況,Django、原始 SQL 查詢或資料庫函數是必需的。然而,隨著 Django 1.10 中引入 Cast 函數,您可以在 ORM 本身內實現此轉換。
使用 Cast 函式
將 CharField 轉換為整數,使用下列語法:
from django.db.models import Cast, IntegerField
students.objects.annotate(
student_id_int=Cast('student_id', IntegerField())
).filter(student_id_int__contains=97318).order_by('-student_id_int')
這將使用名為 Student_id_int 的新欄位來註解查詢集,該欄位將轉換為整數型別。然後,您可以根據需要使用這個新欄位進行過濾和排序。
使用Cast 的好處
使用Cast 提供了多項好處:
參考
有關Django ORM 中轉換的更多信息,請參閱文檔:
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3