Django 外鍵的使用方法詳解
一、描述
在利用django做網(wǎng)絡開發(fā)的時候我們會遇到一個問題就是,我們建立了多張數(shù)據(jù)表,但是多張數(shù)據(jù)表中的內(nèi)容是不一樣的,但是之間有著聯(lián)系比如:
我有兩張表,一張是記錄歌曲信息的內(nèi)容,一張是對歌曲操作的內(nèi)容(下載次數(shù)瀏覽次數(shù)),如果我在views中對下載次數(shù)進行一個排序,但是我不能只顯示下載次數(shù),我需要歌名的內(nèi)容,此時我們就需要外鍵來完成這個工作。
歌曲的操作次數(shù)
歌曲信息
二、解決
由于在django中都是使用models.py文件來管理數(shù)據(jù)庫,再通過views.py進行連接操作,最后用urls.py來映射到網(wǎng)站
1.models.py:
dynamic_id = models.AutoField('serial_num', primary_key=True) song = models.ForeignKey(Song, on_delete=models.CASCADE, verbose_name='song name') dynamic_plays = models.IntegerField('plays_num') dynamic_search = models.IntegerField('search_num') dynamic_down = models.IntegerField('down_num')
就可以完成外鍵的設置,第一個參數(shù)就是類名,這樣就和歌曲信息關聯(lián)在一起了。
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_by('song_release').all()[:3] # hot search and download search_ranking = search_song[:6] down_ranking = Dynamic.objects.select_related('song').order_by('dynamic_down').all()[:6] all_ranking = [search_ranking, down_ranking] return render(request, 'index/test.html', locals())
根據(jù)上面的信息可以看到在search_song中利用了dynamic_search這個字段來聯(lián)系我們遇到的信息內(nèi)容,將dynamic_search和song的信息連在一起外接字段是song,也可以是其他的連接方式。
3.idnex.html:
<img src="{% static 'image/logo.png' %}"> <br/> {% for play_hot in play_hot_song %} {{ play_hot.song.song_name }} <br/> {% endfor %}
在.html文件中我們使用了在views.py中的對象來引用了song當中的信息,play_hot_song是在views.py中的字段名,進行遍歷的是play_hot.song.song_name,play_hot是遍歷的參數(shù),song是接口的字段名,song_name是外接對象的內(nèi)容,這樣就可以將信息映射到網(wǎng)站中。
三、結果
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
django自定義非主鍵自增字段類型詳解(auto increment field)
這篇文章主要介紹了django自定義非主鍵自增字段類型詳解(auto increment field),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03詳細解讀Python中解析XML數(shù)據(jù)的方法
這篇文章主要介紹了Python中解析XML數(shù)據(jù)的方法,是Python入門學習中的基礎知識,需要的朋友可以參考下2015-10-10