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数据结构之Array用法实例
Oct 09 Python
python脚本设置系统时间的两种方法
Feb 21 Python
Python常用知识点汇总
May 08 Python
python实现简单名片管理系统
Nov 30 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
Aug 13 Python
Django实现分页显示效果
Oct 31 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
Nov 07 Python
django在保存图像的同时压缩图像示例代码详解
Feb 11 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
Mar 30 Python
解析python 类方法、对象方法、静态方法
Aug 15 Python
Django正则URL匹配实现流程解析
Nov 13 Python
Python3爬虫RedisDump的安装步骤
Feb 20 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
ADODB的数据库封包程序库
2006/12/31 PHP
人尽可用的Windows技巧小贴士之下篇
2007/03/22 PHP
php IP及IP段进行访问限制的代码
2008/12/17 PHP
解析如何去掉CodeIgniter URL中的index.php
2013/06/25 PHP
PHP json_decode函数详细解析
2014/02/17 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
jquery实现带二级菜单的导航示例
2014/04/28 Javascript
javascript自定义的addClass()方法
2014/05/28 Javascript
前端轻量级MVC框架CanJS详解
2014/09/26 Javascript
Angularjs 基础入门
2014/12/26 Javascript
JS实现的4种数字千位符格式化方法分享
2015/03/02 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
JavaScript的Number对象的toString()方法
2015/12/18 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
最基础的vue.js双向绑定操作
2017/08/23 Javascript
详解jenkins自动化部署vue
2019/05/14 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
在Django中创建第一个静态视图
2015/07/15 Python
python模块之sys模块和序列化模块(实例讲解)
2017/09/13 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
2020/02/07 Python
Python类绑定方法及非绑定方法实例解析
2020/10/09 Python
Python项目实战之使用Django框架实现支付宝付款功能
2021/02/23 Python
amazeui模态框弹出后立马消失并刷新页面
2020/08/19 HTML / CSS
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
新党章的学习心得体会
2014/11/07 职场文书
2014年会计工作总结
2014/11/27 职场文书
学雷锋倡议书
2015/01/19 职场文书
2015年会计工作总结范文
2015/05/26 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
使用Python开发冰球小游戏
2022/04/30 Python