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分析nignx访问日志脚本分享
Feb 26 Python
python中字典(Dictionary)用法实例详解
May 30 Python
python-docx修改已存在的Word文档的表格的字体格式方法
May 08 Python
django2.0扩展用户字段示例
Feb 13 Python
python实现弹跳小球
May 13 Python
python requests指定出口ip的例子
Jul 25 Python
利用anaconda作为python的依赖库管理方法
Aug 13 Python
Python imutils 填充图片周边为黑色的实现
Jan 19 Python
浅析Python requests 模块
Oct 09 Python
python实现猜拳游戏项目
Nov 30 Python
Python爬虫自动化爬取b站实时弹幕实例方法
Jan 26 Python
详解Python魔法方法之描述符类
May 26 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
Symfony2联合查询实现方法
2016/03/18 PHP
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
JavaScript中常见陷阱小结
2010/04/27 Javascript
jQuery版Tab标签切换
2011/03/16 Javascript
jQuery EasyUI API 中文文档 搜索框
2011/09/29 Javascript
JS实现标签页效果(配合css)
2013/04/03 Javascript
关闭浏览器时提示onbeforeunload事件
2013/12/25 Javascript
不要使用jQuery触发原生事件的方法
2014/03/03 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
jQuery中size()方法用法实例
2014/12/27 Javascript
通过设置CSS中的position属性来固定层的位置
2015/12/14 Javascript
JS中的==运算: [''] == false —&gt;true
2016/07/24 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
2017/03/23 jQuery
JavaScript该如何学习 怎样轻松学习JavaScript
2017/06/12 Javascript
javaScript封装的各种写法
2017/08/14 Javascript
原生javascript实现的全屏滚动功能示例
2017/09/19 Javascript
vue封装一个简单的div框选时间的组件的方法
2019/01/06 Javascript
jsonp跨域获取百度联想词的方法分析
2019/05/13 Javascript
jquery添加div实现消息聊天框
2020/02/08 jQuery
jQuery 实现扁平式小清新导航
2020/07/07 jQuery
[42:52]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Django项目中包含多个应用时对url的配置方法
2018/05/30 Python
Python实现多条件筛选目标数据功能【测试可用】
2018/06/13 Python
python实战串口助手_解决8串口多个发送的问题
2019/06/12 Python
Python爬虫动态ip代理防止被封的方法
2019/07/07 Python
Python Matplotlib 基于networkx画关系网络图
2019/07/10 Python
详解Python中的文件操作
2021/01/14 Python
澳大利亚购买太阳镜和眼镜网站:Glamoureyes
2020/09/22 全球购物
校园之星获奖感言
2014/01/29 职场文书
九年级数学教学反思
2014/02/02 职场文书
美术毕业生求职信
2014/02/25 职场文书
文明城市标语
2014/06/16 职场文书
2015年物业管理工作总结
2015/04/23 职场文书
python中%格式表达式实例用法
2021/06/18 Python