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 相关文章推荐
Python3中常用的处理时间和实现定时任务的方法的介绍
Apr 07 Python
介绍Python的@property装饰器的用法
Apr 28 Python
Python的Urllib库的基本使用教程
Apr 30 Python
django之session与分页(实例讲解)
Nov 13 Python
python读取TXT每行,并存到LIST中的方法
Oct 26 Python
python 实现list或string按指定分段
Dec 25 Python
Python脚本如何在bilibili中查找弹幕发送者
Jun 04 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
Jun 10 Python
TensorFlow中如何确定张量的形状实例
Jun 23 Python
Python如何识别银行卡卡号?
Jun 10 Python
Python Pandas模块实现数据的统计分析的方法
Jun 24 Python
PyCharm 配置SSH和SFTP连接远程服务器
May 11 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
微信公众号开发之微信公共平台消息回复类实例
2014/11/14 PHP
微信自定义菜单的处理开发示例
2015/04/16 PHP
优化WordPress的Google字体以加速国内服务器上的运行
2015/11/24 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
游戏人文件夹程序 ver 4.03
2006/07/14 Javascript
jquery遍历input取得input的name
2009/04/27 Javascript
jquery select(列表)的操作(取值/赋值)
2011/03/16 Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
2012/06/22 Javascript
Javascript的&amp;&amp;和||的另类用法
2014/07/23 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
2017/04/04 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
2017/07/11 Javascript
vue loadmore 组件滑动加载更多源码解析
2017/07/19 Javascript
微信小程序 wx:for遍历循环使用实例解析
2019/09/09 Javascript
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
Python中的if、else、elif语句用法简明讲解
2016/03/11 Python
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
2017/09/24 Python
wxpython实现图书管理系统
2018/03/12 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
2018/03/19 Python
python读取txt文件中特定位置字符的方法
2018/12/24 Python
Django框架模板用法入门教程
2019/11/04 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
python数据爬下来保存的位置
2020/02/17 Python
tensorflow pb to tflite 精度下降详解
2020/05/25 Python
关于Python3爬虫利器Appium的安装步骤
2020/07/29 Python
手把手教你用纯css3实现轮播图效果实例
2017/05/04 HTML / CSS
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
澳大利亚巧克力花束和礼品网站:Tastebuds
2019/03/15 全球购物
大学生咖啡店创业计划书
2014/01/21 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
工程承包协议书范本
2014/09/29 职场文书
给老婆的保证书怎么写
2015/05/08 职场文书
求职信:会计求职的写作技巧
2019/04/24 职场文书
基于CSS3画一个iPhone
2021/04/21 HTML / CSS
Python进程间的通信之语法学习
2022/04/11 Python