61.django 中的 F 的作用?
像之前我們所了解的一些過濾的例子和操作都是在針對字段值和某一個常量之間作比較,但是如果我們要針對兩個字段值作比較的話就不行了,這就涉及到這個F查詢了
62.django 中的 Q 的作用?
filter() 等方法中的關鍵字參數查詢都是一起進行“AND” 的。 如果你需要執行更復雜的查詢(例如OR語句),你可以使用Q對象。
63.django 中如何執行原生 SQL?
1.使用execute執行自定義的SQL
直接執行SQL語句(類似於pymysql的用法)
# 更高靈活度的方式執行原生SQL語句
from django.db import connection
cursor = connection.cursor()
cursor.execute("SELECT DATE_FORMAT(create_time, '%Y-%m') FROM blog_article;")
ret = cursor.fetchall()
print(ret)
2.使用extra方法 :queryset.extra(select={"key": "原生的SQL語句"})
3.使用raw方法
1.執行原始sql並返回模型
2.依賴model多用於查詢
64.only 和 defer 的區別?
defer('id','name'):取出對象,字段除了id和name都有
only('id','name'):取的對象,只有id和name
前提:有外鍵存在時,可以很好的減少數據庫請求的次數,提高性能
select_related通過多表join關聯查詢,一次性獲得所有數據,只執行一次SQL查詢
prefetch_related分別查詢每個表,然后根據它們之間的關系進行處理,執行兩次查詢