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多线程http下载实现示例
Dec 30 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
Jul 02 Python
关于Tensorflow中的tf.train.batch函数的使用
Apr 24 Python
python实现linux下抓包并存库功能
Jul 18 Python
Python 互换字典的键值对实例
Feb 12 Python
python读写csv文件并增加行列的实例代码
Aug 01 Python
Python中生成一个指定长度的随机字符串实现示例
Nov 06 Python
Python使用ElementTree美化XML格式的操作
Mar 06 Python
Jupyter Notebook折叠输出的内容实例
Apr 22 Python
Jupyter Notebook 实现正常显示中文和负号
Apr 24 Python
如何理解Python中的变量
Jun 01 Python
python实现会员管理系统
Mar 18 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 metaphone()函数及php localeconv() 函数实例解析
2016/05/15 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
2016/10/17 PHP
php接口实现拖拽排序功能
2018/04/23 PHP
javascript,jquery闭包概念分析
2010/06/19 Javascript
页面只能打开一次Cooike如何实现
2012/12/04 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
js鼠标悬浮出现遮罩层的方法
2015/01/28 Javascript
JavaScript数组对象赋值用法实例
2015/08/04 Javascript
HTML5之WebSocket入门3 -通信模型socket.io
2015/08/21 Javascript
JQuery实现网页右侧随动广告特效
2016/01/17 Javascript
使用JavaScript判断手机浏览器是横屏还是竖屏问题
2016/08/02 Javascript
jQuery向webApi提交post json数据
2017/01/16 Javascript
Bootstrap导航条学习使用(一)
2017/02/08 Javascript
nodejs入门教程六:express模块用法示例
2017/04/24 NodeJs
Angular指令之restict匹配模式的详解
2017/07/27 Javascript
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
Python科学计算包numpy用法实例详解
2018/02/08 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
2018/10/21 Python
Python自动发送邮件的方法实例总结
2018/12/08 Python
Python控制键盘鼠标pynput的详细用法
2019/01/28 Python
Python利用Scrapy框架爬取豆瓣电影示例
2020/01/17 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
2020/03/09 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
英国123鲜花网站:123 Flowers
2019/07/07 全球购物
淘宝客服自我总结鉴定
2014/01/25 职场文书
医务人员自我评价
2014/01/26 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
岗位说明书范文
2014/05/07 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
实习单位指导教师评语
2014/12/30 职场文书
银行柜员优质服务心得体会
2016/01/22 职场文书
Go并发4种方法简明讲解
2022/04/06 Golang