Django 外键的使用方法详解


Posted in Python onJuly 19, 2019

一、描述

在利用django做网络开发的时候我们会遇到一个问题就是,我们建立了多张数据表,但是多张数据表中的内容是不一样的,但是之间有着联系比如:

我有两张表,一张是记录歌曲信息的内容,一张是对歌曲操作的内容(下载次数浏览次数),如果我在views中对下载次数进行一个排序,但是我不能只显示下载次数,我需要歌名的内容,此时我们就需要外键来完成这个工作。

歌曲的操作次数

Django 外键的使用方法详解

歌曲信息

Django 外键的使用方法详解

二、解决

由于在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.CASCADE, 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_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())

根据上面的信息可以看到在search_song中利用了dynamic_search这个字段来联系我们遇到的信息内容,将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是遍历的参数,song是接口的字段名,song_name是外接对象的内容,这样就可以将信息映射到网站中。

三、结果

Django 外键的使用方法详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
一篇不错的Python入门教程
Feb 08 Python
Python中的random()方法的使用介绍
May 15 Python
Python实现的插入排序算法原理与用法实例分析
Nov 22 Python
python实现壁纸批量下载代码实例
Jan 25 Python
python实现随机调用一个浏览器打开网页
Apr 21 Python
Python爬虫实战之12306抢票开源
Jan 24 Python
解决Python正则表达式匹配反斜杠''\''问题
Jul 17 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
Aug 18 Python
pytorch方法测试详解——归一化(BatchNorm2d)
Jan 15 Python
Python 字符串池化的前提
Jul 03 Python
Python音乐爬虫完美绕过反爬
Aug 30 Python
python自动化操作之动态验证码、滑动验证码的降噪和识别
Aug 30 Python
python原类、类的创建过程与方法详解
Jul 19 #Python
Django 全局的static和templates的使用详解
Jul 19 #Python
python之拟合的实现
Jul 19 #Python
Django 过滤器汇总及自定义过滤器使用详解
Jul 19 #Python
python SVM 线性分类模型的实现
Jul 19 #Python
Django密码系统实现过程详解
Jul 19 #Python
Tensorflow实现酸奶销量预测分析
Jul 19 #Python
You might like
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
2011/08/08 PHP
php自定义session示例分享
2014/04/22 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
php通过获取头信息判断图片类型的方法
2015/06/26 PHP
yii2多图上传组件的使用教程
2018/05/10 PHP
php实现微信发红包功能
2018/07/13 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
js Flash插入函数免激活代码
2009/03/31 Javascript
jQuery 使用手册(六)
2009/09/23 Javascript
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
jQuery中设置form表单中action值的实现方法
2016/05/25 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
Vue利用Blob下载原生二进制数组文件
2019/09/25 Javascript
微信小程序(订阅消息)功能
2019/10/25 Javascript
jquery实现商品sku多属性选择功能(商品详情页)
2019/12/20 jQuery
Node.js API详解之 readline模块用法详解
2020/05/22 Javascript
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
轻量级的Web框架Flask 中模块化应用的实现
2017/09/11 Python
Python实现生成随机日期字符串的方法示例
2017/12/25 Python
python docx 中文字体设置的操作方法
2018/05/08 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
Python3.5模块的定义、导入、优化操作图文详解
2019/04/27 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
Kmeans均值聚类算法原理以及Python如何实现
2020/09/26 Python
英国办公用品商店:Office Outlet
2018/04/04 全球购物
巴西Mr. Cat在线商店:购买包包和鞋子
2019/09/08 全球购物
演讲稿怎么写
2014/01/07 职场文书
工作自我评价怎么写
2014/01/29 职场文书
质量主管工作职责
2014/09/26 职场文书
工作检讨书范文
2015/01/23 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
2019年妇科护士的自我鉴定(3篇)
2019/09/26 职场文书
使用Python脚本对GiteePages进行一键部署的使用说明
2021/05/27 Python
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电