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的Cookie.py模块支持冒号做key的方法
Dec 28 Python
深入浅析python继承问题
May 29 Python
python对配置文件.ini进行增删改查操作的方法示例
Jul 28 Python
Python request设置HTTPS代理代码解析
Feb 12 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
Feb 26 Python
Python3日期与时间戳转换的几种方法详解
Jun 04 Python
python中property属性的介绍及其应用详解
Aug 29 Python
使用Rasterio读取栅格数据的实例讲解
Nov 26 Python
如何基于python操作json文件获取内容
Dec 24 Python
Python列表去重复项的N种方法(实例代码)
May 12 Python
Python 使用 PyQt5 开发的关机小工具分享
Jul 16 Python
pandas 实现将NaN转换为None
May 14 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截取字符串之截取utf8或gbk编码的中英文字符串示例
2014/03/12 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
2016/10/11 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
php对mongodb的扩展(小试牛刀)
2012/11/11 Javascript
JavaScript中圆括号()和方括号[]的特殊用法疑问解答
2013/08/06 Javascript
js格式化货币数据实现代码
2013/09/04 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
移除AngularJS下URL中的#字符的方法
2015/06/19 Javascript
在 Express 中使用模板引擎
2015/12/10 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
2016/01/23 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
2017/01/19 Javascript
微信小程序HTTP接口请求封装代码实例
2019/09/05 Javascript
[05:15]2018年度CS GO社区贡献奖-完美盛典
2018/12/16 DOTA
python基础教程之自定义函数介绍
2014/08/29 Python
Python中endswith()函数的基本使用
2015/04/07 Python
举例详解Python中threading模块的几个常用方法
2015/06/18 Python
python实现SMTP邮件发送功能
2020/06/16 Python
python实现雨滴下落到地面效果
2018/06/21 Python
Python 2.7中文显示与处理方法
2018/07/16 Python
Flask之flask-session的具体使用
2018/07/26 Python
用Python解数独的方法示例
2019/10/24 Python
python双向链表原理与实现方法详解
2019/12/03 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
小学德育工作经验交流材料
2014/05/22 职场文书
工作感言一句话
2015/08/01 职场文书
60句有关成长的名言
2019/09/04 职场文书
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android