<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [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' ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看