午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

django ORM之values和annotate使用詳解

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

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

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

開始之前

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

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

annotate起到了group by的作用,

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

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

django ORM之values和annotate使用詳解

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

django ORM之values和annotate使用詳解

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

django ORM之values和annotate使用詳解

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

django ORM之values和annotate使用詳解

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

寫個簡單的遍歷

django ORM之values和annotate使用詳解

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

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

最終處理:

django ORM之values和annotate使用詳解

刪除過程:

django ORM之values和annotate使用詳解

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

django ORM之values和annotate使用詳解

補(bǔ)充知識:django中annotate的一點(diǎn)使用方法

annotate 使用方法:

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

categories = NewsCategory.objects.all()

文章模型名稱為News

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

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

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

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

annotate中其實(shí)是給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 %}

使用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使用詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Django
相關(guān)文章:
主站蜘蛛池模板: 97蜜桃网 | 国产自产视频 | 国产香蕉9 | 午夜精品久久久久99蜜桃最新版 | 国产美女精品视频 | 日本少妇激情视频 | 国产精品久久在线 | 岛国久久久 | 久久国产精品久久精品国产 | 手机免费观看av | 国产乱淫a∨片免费观看 | avove在线播放 | 小明永久2015xxx免费看视频 | 手机看片在线观看 | 四虎欧美 | 在线观看日本黄色 | 中文字幕精品久久久 | 黄色小网站在线观看 | 少妇高潮av久久久久久 | 日韩专区中文字幕 | 久久6热| 国产视频一区二区三区在线观看 | 黄色片毛片 | 国产一区二区在线播放 | 国产一区欧美一区 | 欧美性生交大片免费看 | 成人在线免费看视频 | 国产美女免费视频 | 亚洲福利小视频 | 久久久久久久网站 | 欧美人伦 | 一区二区三区免费 | 福利在线免费观看 | 国产三级午夜理伦三级 | 免费在线成人网 | 国产三级精品视频 | 日本黄色大片免费 | аⅴ天堂中文在线网 | 最新天堂av| 蜜桃av一区二区 | 天堂在线观看中文字幕 |