亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

django ORM之values和annotate使用詳解

瀏覽:3日期:2024-10-05 08:37:10

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

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

開始之前

使用了values和annotate兩個函數

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

annotate起到了group by的作用,

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

看看數據庫數據

django ORM之values和annotate使用詳解

查看每條數據的_id的值

django ORM之values和annotate使用詳解

對_id數據條數進行統計

django ORM之values和annotate使用詳解

轉換數據格式為list

django ORM之values和annotate使用詳解

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

寫個簡單的遍歷

django ORM之values和annotate使用詳解

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

導出sql,做個備份,開始刪除數據

最終處理:

django ORM之values和annotate使用詳解

刪除過程:

django ORM之values和annotate使用詳解

再回到網站看看數據清洗后的效果

django ORM之values和annotate使用詳解

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

annotate 使用方法:

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

categories = NewsCategory.objects.all()

文章模型名稱為News

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

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

現在就可以對上面的查詢方法進行優化了。

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

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

現在可以這樣查詢分類下的文章數量:

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 %}

使用annotate后的代碼:

def cms_news_category(request): categories = NewsCategory.objects.annotate(num_count=Count(’news’)) context = { ’categories’: categories } return render(request, ’cms/category.html’, context=context) 模板category.html中的代碼: {% for category in categories %} <td>{{ category.name }}</td> <td>{{ category.num_count }}</td> {% endfor %}

以上這篇django ORM之values和annotate使用詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Django
相關文章:
主站蜘蛛池模板: 亚洲欧美片 | 精品一区二区久久久久久久网站 | 欧美黑人乱大交灬太大了视频 | 色综合久久88色综合天天 | 精品中文字幕制服中文 | 国产 麻豆 欧美亚洲综合久久 | 色综合天天色综合 | 全免费一级毛片在线播放 | 中文字幕亚洲欧美 | 操网| 亚洲日韩欧美一区二区在线 | 日韩做爰视频免费 | 99久久www免费人成精品 | 青青成人福利国产在线视频 | 国产网红主播chinese | 中文字幕亚洲综合久久202 | 国产精品免费看久久久 | 亚洲精品一区二区久久 | 婷婷五月色综合香五月 | 在线免费观看黄色网址 | 高清国产美女一级a毛片录 高清国产美女在线观看 | 欧美性野久久久久久久久 | 在线观看黄色 | 日韩欧美精品综合一区二区三区 | 婷婷色中文 | 免费一级欧美片在线观免看 | 欧美a级v片在线观看一区 | 激情五月综合婷婷 | 一级黄色免费毛片 | 亚洲综合精品一区二区三区中文 | 日本一级成人毛片免费观看 | 一区二区在线观看高清 | 黑人操中国美女 | 色香欲综合成人免费视频 | 91久久老司机福利精品网 | 人人做天天爱夜夜爽中字 | 中文字幕乱码一区三区免费 | 韩国r级福利视频在线观看网站 | 九九久久精品 | 欧美精品国产日韩综合在线 | 尤物网站在线观看 |