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抓取京东图书评论数据
Aug 31 Python
SVM基本概念及Python实现代码
Dec 27 Python
Python2.7.10以上pip更新及其他包的安装教程
Jun 12 Python
pandas 按照特定顺序输出的实现代码
Jul 10 Python
python读取图片任意范围区域
Jan 23 Python
Python基于opencv实现的简单画板功能示例
Mar 04 Python
树莓派使用USB摄像头和motion实现监控
Jun 22 Python
利用python计算时间差(返回天数)
Sep 07 Python
python opencv将表格图片按照表格框线分割和识别
Oct 30 Python
python实现简单飞行棋
Feb 06 Python
python的Jenkins接口调用方式
May 12 Python
Java byte数组操纵方式代码实例解析
Jul 22 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
简单的用PHP编写的导航条程序
2006/10/09 PHP
Dedecms常用函数解析
2008/02/01 PHP
php下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
php生成curl命令行的方法
2015/12/14 PHP
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
Javascript实现滑块滑动改变值的实现代码
2013/04/12 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
jquery实现页面图片等比例放大缩小功能
2014/02/12 Javascript
深入了解JavaScript中的Symbol的使用方法
2015/07/28 Javascript
Javascript的动态增加类的实现方法
2016/10/20 Javascript
bootstrap配合Masonry插件实现瀑布式布局
2017/01/18 Javascript
react实现pure render时bind(this)隐患需注意!
2017/03/09 Javascript
浅谈sass在vue注意的地方
2017/08/10 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
2019/03/15 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
Vue 中使用 typescript的方法详解
2020/02/17 Javascript
跟老齐学Python之for循环语句
2014/10/02 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
在Python 字典中一键对应多个值的实例
2019/02/03 Python
python绘制评估优化算法性能的测试函数
2019/06/25 Python
Python pandas自定义函数的使用方法示例
2019/11/20 Python
Scrapy框架介绍之Puppeteer渲染的使用
2020/06/19 Python
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
美国孩之宝玩具官网:Hasbro Pulse
2019/06/24 全球购物
莫斯科大型旅游休闲商品超市:Camping.ru
2020/09/16 全球购物
理工大学毕业生自荐信
2013/11/01 职场文书
优秀大学生推荐信范文
2013/11/28 职场文书
工程管理专业毕业生自荐信
2014/01/24 职场文书
国庆节活动总结
2014/08/26 职场文书
讲党性心得体会
2014/09/03 职场文书
优秀共产党员演讲稿
2014/09/04 职场文书
工作犯错保证书
2015/05/11 职场文书