<del id="d4fwx"><form id="d4fwx"></form></del>
      <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

            <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
          • 如何使用djangoORM中values和annotate-創(chuàng)新互聯(lián)

            這篇文章主要為大家展示了如何使用django ORM中values和annotate,內(nèi)容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

            創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比廬山網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式廬山網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務覆蓋廬山地區(qū)。費用合理售后完善,十載實體公司更值得信賴。

            任務需求:項目中有個問題表,存儲所有的問題,以_id為編號,由于_id未做唯一校驗,所以早期數(shù)據(jù)有多個問題使用同一編號的情況。

            需求就是找出編號有重復的數(shù)據(jù),只保留第一個

            開始之前

            使用了values和annotate兩個函數(shù)

            簡單的來說values可以理解成展示models指定列的值

            annotate起到了group by的作用,

            所以我做的事就是對指定字段按個數(shù)進行統(tǒng)計,然后留下重復編號的數(shù)據(jù),進行清洗

            看看數(shù)據(jù)庫數(shù)據(jù)

            如何使用django ORM中values和annotate

            查看每條數(shù)據(jù)的_id的值

            如何使用django ORM中values和annotate

            對_id數(shù)據(jù)條數(shù)進行統(tǒng)計

            如何使用django ORM中values和annotate

            轉(zhuǎn)換數(shù)據(jù)格式為list

            如何使用django ORM中values和annotate

            Emmm。。。我只需要重復數(shù)據(jù),所以把_id唯一的數(shù)據(jù)剔除

            寫個簡單的遍歷

            如何使用django ORM中values和annotate

            然后只需要找到這些數(shù)據(jù),對每個_id只留下第一條數(shù)據(jù)

            導出sql,做個備份,開始刪除數(shù)據(jù)

            最終處理:

            如何使用django ORM中values和annotate

            刪除過程:

            如何使用django ORM中values和annotate

            再回到網(wǎng)站看看數(shù)據(jù)清洗后的效果

            如何使用django ORM中values和annotate

            補充知識:django中annotate的一點使用方法

            annotate 使用方法:

            有時候我們需要連接兩個表做一些查詢,比如博客中有兩個模型,一個文章模型,一個分類模型,分類模型是文章中的分類字段的外鍵,如果我們需要查詢每個分類下文章的數(shù)量,最簡單的方法就是先將所有分類查到:

            categories = NewsCategory.objects.all()

            文章模型名稱為News

            然后每個分類django都會自動給你添加一個屬性category.news_set,這個方法就可以拿到分類對應的文章,然后category.news_set.count()就可以拿到每個分類有多少個文章了。

            但是這個方法很低級啊,如果想高級一點,查詢性能更優(yōu)化,annotate了解一下

            現(xiàn)在就可以對上面的查詢方法進行優(yōu)化了。

            categories = NewsCategory.objects.annotate(num_count=Count('news'))

            annotate中其實是給categories(Queryset)添加了一個屬性,Queryset中的每個對象都會有這么一個屬性

            現(xiàn)在可以這樣查詢分類下的文章數(shù)量:

            category.num_count()

            將代碼貼出來

            原先的代碼:

             def cms_news_category(request):
             categories = NewsCategory.objects.all()
             context = {
              'categories': categories
             }
             return render(request, 'cms/category.html', context=context)
             
             模板category.html中的代碼:
             {% for category in categories %}
              <td>{{ category.name }}</td>
              <td>{{ category.news_set.count }}</td>
             {% endfor %}

            當前文章:如何使用djangoORM中values和annotate-創(chuàng)新互聯(lián)
            瀏覽地址:http://www.jbt999.com/article48/pspep.html

            成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導航響應式網(wǎng)站、手機網(wǎng)站建設(shè)、虛擬主機App開發(fā)、定制開發(fā)

            廣告

            聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

            成都網(wǎng)站建設(shè)公司

              <del id="d4fwx"><form id="d4fwx"></form></del>
              <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

                    <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
                  • 日韩黄页网站 | 日韩AV无码乱伦 | 伊人蕉久 | 黄色一级片免费看 | 国产精品久久久违 |