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代码真的很爽
Aug 26 Python
Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
Sep 06 Python
用Python脚本生成Android SALT扰码的方法
Sep 18 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
Jun 04 Python
Python实现重建二叉树的三种方法详解
Jun 23 Python
python实现动态创建类的方法分析
Jun 25 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
Jul 01 Python
在Django中实现添加user到group并查看
Nov 18 Python
通过Turtle库在Python中绘制一个鼠年福鼠
Feb 03 Python
Django解决frame拒绝问题的方法
Dec 18 Python
Python实现王者荣耀自动刷金币的完整步骤
Jan 22 Python
10个顶级Python实用库推荐
Mar 04 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
利用递归把多维数组转为一维数组的函数
2006/10/09 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
php实现表单提交上传文件功能
2018/05/28 PHP
CI框架实现创建自定义类库的方法
2018/12/25 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
使用focus方法让光标默认停留在INPUT框
2014/07/29 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
简述AngularJS相关的一些编程思想
2015/06/23 Javascript
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
2017/12/08 Javascript
vue+webpack模拟后台数据的示例代码
2018/07/26 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
2019/03/26 Javascript
JavaScript实现美化滑块效果
2019/05/17 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
[19:15]DK战队纪录片
2014/09/02 DOTA
[00:59]DOTA2背景故事第二期之四大基本法则
2020/07/07 DOTA
详解python中的index函数用法
2019/08/06 Python
python基于gevent实现并发下载器代码实例
2019/11/01 Python
简单了解django处理跨域请求最佳解决方案
2020/03/25 Python
python函数调用,循环,列表复制实例
2020/05/03 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
详解Python GUI编程之PyQt5入门到实战
2020/12/10 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
2021/03/03 Python
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
师德演讲稿范文
2014/05/06 职场文书
人事代理委托书
2014/09/27 职场文书
汽车4S店前台接待岗位职责
2015/04/03 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书
远程教育集中轮训基层干部培训班学习心得体会
2016/01/09 职场文书
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫
Python各协议下socket黏包问题原理
2022/04/12 Python
MySQL数据库之内置函数和自定义函数 function
2022/06/16 MySQL