F() 函數的作用:
F()允許Django在未實際連結資料的情況下具有對資料庫字段的值的引用。
通常情況下我們更新資料時需要先從資料庫裡将原資料取出後存在記憶體裡,然後編輯某些屬性,最後送出。
比如實作模糊查詢時,查找 ID 比
phone
大的字段,通常我們會這麼寫:
num = Reporters.objects.get(name = 'phone') #取出phone的id
obj = UserInfo.objects.filter(id__gt = num) #gt表示大于
如果我們使用F()函數的話,上面的兩行代碼等價于下面這個:
from django.db.models import F #導包
obj = UserInfo.objects.filter(id__gt=F('phone'))
原理:當Django程式中出現F()時,Django會使用SQL語句的方式取代标準的Python操作。
上述代碼中,python做的唯一的事情就是通過Django的F()函數建立了一條SQL語句然後執行而已。