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抓取京东价格分析京东商品价格走势
Jan 09 Python
用Pygal绘制直方图代码示例
Dec 07 Python
浅谈numpy数组的几种排序方式
Dec 15 Python
python互斥锁、加锁、同步机制、异步通信知识总结
Feb 11 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
Apr 19 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
python2和python3的输入和输出区别介绍
Nov 20 Python
python读写csv文件实例代码
Jul 05 Python
Python从MySQL数据库中面抽取试题,生成试卷
Jan 14 Python
浅谈Python基础之列表那些事儿
May 11 Python
python 开心网和豆瓣日记爬取的小爬虫
May 29 Python
一篇文章弄懂Python关键字、标识符和变量
Jul 15 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
phpMyAdmin 安装配置方法和问题解决
2009/06/08 PHP
PHP导入Excel到MySQL的方法
2011/04/23 PHP
php 修改、增加xml结点属性的实现代码
2013/10/22 PHP
php绘图中显示不出图片的原因及解决
2014/03/05 PHP
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
input的focus方法使用
2010/03/13 Javascript
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
Jquery submit()无法提交问题
2013/04/21 Javascript
javascript实现原生ajax的几种方法介绍
2013/09/21 Javascript
不提示直接关闭网页窗口的JS示例代码
2013/12/17 Javascript
js 与 php 通过json数据进行通讯示例
2014/03/26 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
Javascript中的arguments对象
2016/06/20 Javascript
深入分析node.js的异步API和其局限性
2016/09/05 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
jQuery+PHP+Mysql实现抽奖程序
2020/04/12 jQuery
vue的常用组件操作方法应用分析
2018/04/13 Javascript
Vue自定义弹窗指令的实现代码
2018/08/13 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
2020/11/17 Vue.js
[50:45]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第一场
2018/04/10 DOTA
Python实现替换文件中指定内容的方法
2018/03/19 Python
详解python3中tkinter知识点
2018/06/21 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
2020/02/28 Python
python怎么自定义捕获错误
2020/06/29 Python
你的自行车健身专家:FaFit24
2016/11/16 全球购物
大学军训感言
2014/01/10 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
大学生个人总结范文
2015/02/15 职场文书
高中信息技术教学反思
2016/02/16 职场文书
2016年艾滋病宣传活动总结
2016/04/01 职场文书
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
2022/06/21 Java/Android