Django 外來鍵的使用方法詳解

2022-09-27 07:57:06 字數 1773 閱讀 2723

一、描述

在利用django做網路開發的時候我們會遇到乙個問題就是,我們建立了多張資料表,但是多張資料表中的內容是不一樣的,但是之間有著聯絡比如:

我有兩張表,一張是記錄歌曲資訊的內容,一張是對歌曲操作的內容(**次數瀏覽次數),如果我在views中對**次數進行乙個排序,但是我不能只顯示**次數,我需要歌名的內容,此時我們就需要外來鍵來完成這個工作。

歌曲的操作次數

歌曲資訊

二、解決

由於在django中都是使用models.py檔案來管理資料庫,再通過views.py進行連線操作,最後用urls.py來對映到**

1.models.py:

dynamic_id = models.autofield('serial_num', primary_key=true)

song = models.foreignkey(song, on_delete=models.cas verbose_name='song name')

dynamic_plays = models.integerfield('plays_num')

dynamic_search = models.integerfield('search_num')

dynamic_down = models.integerfield('down_num')

就可以完成外來鍵的設定,第乙個引數就是類名,這樣就和歌曲資訊關聯在一起了。

2.views.py

# hot search songs

search_song = dynamic.objects.select_related('song').order_by('dynamic_search').all()[:8]

# sort songs

label_list = label.objects.all()

# hot songs

play_hot_song = dynamic.objects.select_related('song').order_by('dynamic_plays').all()[:10]

# recommend songs

daily_recommendation = song.objects.order_bietwraqxy('song_release').all()[:3]

# hot search and download

search_ranking = search_song[:6]

down_ranking = dynamic.objects.select_relat程式設計客棧ed('song').oietwraqxrder_by('dynamic_down').all()[:6]

all_ranking = [search_ranking, down_ranking]

return render(request, 'index/test.html', loc

根據上面的資訊可以看到在search_song中利用了dynamic_search這個欄位來聯絡我們遇到的資訊內容,將dynamic_search和song的資訊連在一起外接欄位是song,也可以是其他的連線方式。

3.idnex.html:

}在.html檔案中我們使用了在views.py中的物件來引用了song當中的資訊,play_hot_song是在views.py中的欄位名,進行遍歷的是play_hot.song.song_name,play_hot是遍歷的引數,song是介面的欄位名,song_name是外接物件的內容,這樣就可以將資訊對映到**中。

三、結果

本文標題: django 外來鍵的使用方法詳解

本文位址:

MySQL外來鍵方法使用詳解

一 基本概念 1 mysql中 鍵 和 索引 的定義相同,所以外來鍵和主鍵一樣也是索引的一種。不同的是mysql會自動為所有表的主鍵進行索引,但是外來鍵字段必須由使用者進行明確的索引。用於外來鍵關係的字段必須在所有的參照表中進行明確地索引,innodb不能自動地建立索引。2 外來鍵可以是一對一的,乙...

Mysql外來鍵約束設定使用方法

總結 建立外來鍵語法 constraint symbol foreign key index name index col name,references tbl name index col name,on delete reference option on update reference o...

加速鍵使用方法詳解(示例)

加速鍵的使用 第一步 建立加速鍵表 在resource試圖中新增乙個accelerator資源表,在表中根據條件輸入值。第二步 在類中新增乙個haccel的變數 haccel m haccel 第三步 在初始化函式裡面載入對應的加速鍵表 m haccel loadaccelerators afxge...