[TOC]
>[success] # ORM 查詢常見的字段
>[danger] ##### 支持鏈式調用的
~~~
1.all()
--- 查詢全部返回的是一個queryset類型
2.filter()
--- 過濾查詢指定內返回的是一個queryset類型
3.exclude()
---它包含不滿足查詢參數的對象返回的是一個queryset類型
4.reverse()
---方法反向排序QuerySet 中返回的元素
5.distinct()
---去重和values搭配使用
6.none()
--- 調用none()將創建一個從不返回任何對象的查詢集,并且在訪問結果時不
會執行任何查詢。
~~~
>[danger] ##### 不支持鏈式調用的接口
~~~
1.get()
--- 返回是一個對象,但不存在會報錯注意處理,返回多個對象也會報錯
2.create()
--- 插入一條數據
3.get_or_create()
--- 存在返回數據,不存在就創建數據
--- categories, is_creat = Categroy.objects.get_or_create(name="ss",owner_id=1)
返回兩個參數,第一個參數是創建或者查詢對象,第二個是是否創建,True就是創建成功打印結果‘Categroy object True’
4.update_or_create()
--- 更新創建數據
last
5.count()
--- 查詢條數
6.latest()
---Categroy.objects.latest('name')
---使用作為段提供的field_name,通過order by 返回降序第一個
---'SELECT "blong_categroy"."id", "blong_categroy"."name", '
'"blong_categroy"."status", "blong_categroy"."is_nav", '
'"blong_categroy"."owner_id", "blong_categroy"."created_time" FROM '
'"blong_categroy" ORDER BY "blong_categroy"."name" DESC LIMIT 1',
7.earliest()
---同上返回升序第一個 'ASC'
8.first()
--- 默認通過id 降序返回第一個,在Meta 里面設置ordering=('id','create_tiem') 指定字段排序
9.last()
---默認通過id 升序返回第一個
10.exists()
---用于搜尋對象是否在QuerySet 中以及QuerySet 是否存在任何對象
---@override_settings(DEBUG=True)
def test_filter(self):
categories = Categroy.objects.filter(owner__username="wang").exists()
print(categories)
pp(connection.queries)
--- 'SELECT (1) AS "a" FROM "blong_categroy" INNER JOIN "auth_user" ON '
'("blong_categroy"."owner_id" = "auth_user"."id") WHERE '
'"auth_user"."username" = \'wang\' LIMIT 1',
--- 返回True
11.bulk_create()
---bulk_create()是執行一條SQL存入多條數據,里面是一個列表 執行的批量添加的sql
---用法 保存一組對象添加
user = User.objects.create_user("wang", "wang@qq", "wang1234")
for i in range(1, 10):
category_name = 'cate_%s' % i
category = Categroy(name=category_name, owner=user)
obj_list.append(category)
--- 執行的sql
'INSERT INTO "blong_categroy" ("name", "status", "is_nav", '
'"owner_id", "created_time") SELECT \'cate_1\', 1, 0, 1, \'2018-06-09 '
"04:51:33.025432' UNION ALL SELECT 'cate_2', 1, 0, 1, '2018-06-09 "
"04:51:33.025432' UNION ALL SELECT 'cate_3', 1, 0, 1, '2018-06-09 "
"04:51:33.025432' UNION ALL SELECT 'cate_4', 1, 0, 1, '2018-06-09 "
"04:51:33.025432' UNION ALL SELECT 'cate_5', 1, 0, 1, '2018-06-09 "
"04:51:33.025432' UNION ALL SELECT 'cate_6', 1, 0, 1, '2018-06-09 "
"04:51:33.025432' UNION ALL SELECT 'cate_7', 1, 0, 1, '2018-06-09 "
"04:51:33.025432' UNION ALL SELECT 'cate_8', 1, 0, 1, '2018-06-09 "
"04:51:33.025432' UNION ALL SELECT 'cate_9', 1, 0, 1, '2018-06-09 "
"04:51:33.025432'",
12.in_bulk()
---獲取主鍵值的列表,并返回將每個主鍵值映射到具有給定ID的對象的實例的
字典。 如果未提供列表,則會返回查詢集中的所有對象。
>>> Blog.objects.in_bulk([1])
{1: <Blog: Beatles Blog>}
>>> Blog.objects.in_bulk([1, 2])
{1: <Blog: Beatles Blog>, 2: <Blog: Cheddar Talk>}
>>> Blog.objects.in_bulk([])
{}
>>> Blog.objects.in_bulk()
{1: <Blog: Beatles Blog>, 2: <Blog: Cheddar Talk>, 3: <Blog: Django Weblog>}
13.update()
---更新數據,只支持queryset 類型,也就是說支持鏈式調用的參數進行使用
14.delete()
---刪除數據
~~~
>[danger] ##### 進階接口--具體見ORM技巧篇
~~~
1.defer()
----除了什么字段以外
2.only()
----只查詢什么字段
3.select_related()
----兩個表關聯的時候,差另一個表的信息 join on 用法
4.prefetch_related()
~~~
* 注 官方注解對select_related()解釋
~~~
Returns a new QuerySet instance that will select related objects.
If fields are specified, they must be ForeignKey fields and only those
related objects are included in the selection.
If select_related(None) is called, the list is cleared.
~~~
* 簡單的說無參就是默認,查ForeignKey,有差數是你去指定關聯的ForeignKey
~~~
返回一個新的QuerySet實例,它將選擇相關的對象。
如果字段被指定,它們必須是外鍵字段,只有那些字段
相關的對象包含在選擇中。
如果調用selectrelated(None),則清除列表。
~~~
>[danger] ##### F/Q具體見ORM技巧/常見問題篇
* F專門取對象中某列值的操作,也可以做并發處理
~~~
from django.db.models import F
models.Tb1.objects.update(num=F('num')+1)
~~~
* Q 條件查詢
~~~
from django.db.models import Q
categories = Categroy.objects.filter(Q(id=1) | Q(id=2))
---- 打印的語句
'SELECT "blong_categroy"."id", "blong_categroy"."name", '
'"blong_categroy"."status", "blong_categroy"."is_nav", '
'"blong_categroy"."owner_id", "blong_categroy"."created_time" FROM '
'"blong_categroy" WHERE ("blong_categroy"."id" = 1 OR '
'"blong_categroy"."id" = 2) LIMIT 21'
~~~
- 網絡原理
- 為搭建框架做準備
- 簡單認識網路
- 自定義模擬網站案例
- 優化最終框架
- 數據存儲 -- data
- 用戶個人信息存儲 -- User.txt
- 路由映射 -- routes
- 處理用戶信息 -- routes_static.py
- 保存靜態文件 -- static
- templates -- html 集中處理模塊
- 首頁 -- index.html
- 登陸 -- login.html
- 用戶注冊頁面 -- register
- 日志模塊 -- log.gua.txt
- 啟動文件--server.py
- orm處理 -- model.py
- 日志模塊 -- utils.py
- 兩種數據庫類型
- 傳統數據庫了解篇
- 前端快速入門
- JS簡單使用入門
- css簡單快速入門
- DJANGO
- virtualenv-創建虛擬環境
- 項目結構
- django-admin中文配置
- django-打印sql語句
- django-基礎
- 認識MVC和MTV
- Django--初識
- Django--初識案例
- Django-FBV/CBV
- Django--常用input 交互
- Django-url
- Django-url.py 配置
- Django-include 使用
- Django-url name
- Django-ORM
- ORM-數據庫配置
- ORM-model字段
- ORM-model字段解釋
- ORM-字段選項
- ORM-查詢
- ORM-四種常用查詢方法
- ORM-三種獲取數據
- ORM-其他查詢方式
- ORM-條件查詢雙線
- ORM-Q和F條件使用
- ORM-三種數據庫交互
- 案例 -- 一對多
- ORM-技巧/常見問題
- ORM-N+1 問題
- ORM-并發的處理
- ORM-數量查詢、
- ORM-正向反向查詢
- ORM-基礎案例一
- ORM-基礎一對多案例
- Django-templates
- Django-模板的繼承
- Django-模板的過濾
- Django-自定義模板的過濾
- Django-cookie
- Django-cookies 裝飾器
- Djang-session
- Django-CSRF
- Django-中間件 -- 后續了解
- Django- 緩存 -- 沒有深入了解
- Django-form
- From-ajax
- form-內部驗證處理
- form-屬性
- form-常用的標簽字段
- form-常用的下拉和選擇
- form-widget速查
- Django-ajax序列化
- Django-多種ajax寫法
- ajax-原生寫法
- ajax-$寫法
- ajax-ifram
- Django-ajax圖片上傳
- ajax-原始寫法
- ajax-正常寫法
- iframe+form
- 實戰寫法
- Django-常用自編寫組件
- Django-雙菜單組合搜索
- Django - 多菜單組合搜索
- Django-分頁
- django-綜合基礎
- 綜合基礎-render
- django-admin
- admin-頁面配置
- admin-字段配置
- admin-編輯頁面
- admin-forms驗證
- admin-創建抽象類
- django-驗證碼
- 驗證碼-第三方生成庫
- 驗證碼-view.py使用
- 驗證碼-注意引入Monaco.ttf
- django-用戶注冊
- 注冊-form 模塊
- 注冊-views 模塊
- 注冊-html模塊
- 注冊-model模塊
- django-用戶登錄三種
- session登錄
- form-session 寫法
- view-寫法
- Html-寫法
- model-寫法
- 繼承類登錄
- 外鍵關聯登錄
- django-簡單的student 管理案例
- app-urls.py
- app-models.py配置
- admin-admin.py配置
- app-form.py 和數據庫關聯的寫法
- app-FBV_views.py
- app-CBV_views.py
- templates-index.html
- django-博客系統
- APP目錄-models.py 創建
- APP目錄-基礎展示數據分析
- APP目錄-基礎數據展示cls
- ListView
- DetailView
- FormView
- 額外功能拓建
- 添加文章搜索/用戶文章查詢功能
- 增加一個友情鏈接
- 增加一個評論模塊
- App-利用Bootstrap4 搭建樣式
- 項目crm
- 思維導圖
- perfectCRM-項目名字
- settings.py-配置
- view.py-登陸/登出函數
- crm-app文件
- model.py-表的創建
- admin.py-注冊后臺
- view.py-視圖層
- static-靜態文件
- css
- bootstrap.min.css
- dashboard.css
- ie10-viewport-bug-workaround.css
- signin.css
- fonts
- imgs
- js
- jquery.js
- bootstrap.min.js
- holeder.js
- ie10-viewport-bug-workaround.js
- ie-emulation-modes-warning.js
- plugins
- html模板文件-templates
- crm
- index.html-首頁模板