django 外键model的互相读取方法


Posted in Python onDecember 15, 2018

先设定一个关系模型如下:

from django.db import models
class Blog(models.Model):
 name = models.CharField(max_length=100)
 tagline = models.TextField()
 def __str__(self):   
  return self.name
 
class Author(models.Model):
 name = models.CharField(max_length=50)
 email = models.EmailField()
 def __str__(self):   
  return self.name
 
class Entry(models.Model):
 blog = models.ForeignKey(Blog)
 headline = models.CharField(max_length=255)
 body_text = models.TextField()
 authors = models.ManyToManyField(Author)
 def __str__(self):   
  return self.headline

上面的数据关系很明晰,Entry中有Blog和Author的外键,如果要在Entry中读取blog和author的数据很容易:

entry = Entry.objects.all()
for e in entry:
 blog = e.blog
 author = e.authors

要在Blog和Author中读取Entry也可以:

blog = Blog.objects.all()
entry = blog.entry_set.all()
 
author = Author.objects.all()
entry = author.entry_set.all()

下面通过entry使blog和author互相读取,比如要知道一个blog的Author只需如下:

blogs = Blog.objects.all()
for blog in blogs:
 if blog.name== “我们想要查询的博客的name”
  author = blog. entry_set.authors

要查询一个author的所有blog如下:

authors = Author.objects.all()
blogs = []
 
for author in authors:
 if author.name== “我们想要查询的Author的name”
  for entry in author.entry_set.all():
   blogs.append(entry. blog)

以上这篇django 外键model的互相读取方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python使用django获取用户IP地址的方法
May 11 Python
在Python中使用swapCase()方法转换大小写的教程
May 20 Python
python3编码问题汇总
Sep 06 Python
深入理解python中的select模块
Apr 23 Python
python3调用R的示例代码
Feb 23 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
Jul 02 Python
Pycharm配置远程调试的方法步骤
Dec 17 Python
python爬取cnvd漏洞库信息的实例
Feb 14 Python
python顺序执行多个py文件的方法
Jun 29 Python
python库matplotlib绘制坐标图
Oct 18 Python
django3.02模板中的超链接配置实例代码
Feb 04 Python
python中温度单位转换的实例方法
Dec 27 Python
Django之Mode的外键自关联和引用未定义的Model方法
Dec 15 #Python
python调用java的jar包方法
Dec 15 #Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
Dec 15 #Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
Dec 15 #Python
浅谈python 导入模块和解决文件句柄找不到问题
Dec 15 #Python
对python当中不在本路径的py文件的引用详解
Dec 15 #Python
对python3 中方法各种参数和返回值详解
Dec 15 #Python
You might like
Apache2 httpd.conf 中文版
2006/12/06 PHP
PHP版微信小店接口开发实例
2016/11/12 PHP
php之可变变量的实例详解
2017/09/12 PHP
tp5框架内使用tp3.2分页的方法分析
2019/05/05 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
2020/05/14 PHP
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
js中的this关键字详解
2013/09/25 Javascript
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
JavaScript匿名函数与委托使用示例
2014/07/22 Javascript
jQuery中focus事件用法实例
2014/12/26 Javascript
JavaScript操作Cookie详解
2015/02/28 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
2015/10/20 Javascript
基于JS实现无缝滚动思路及代码分享
2016/06/07 Javascript
分享一个原生的JavaScript拖动方法
2016/09/25 Javascript
JavaScript reduce和reduceRight详解
2016/10/24 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
2017/01/08 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
解决ant Design中Select设置initialValue时的大坑
2020/10/29 Javascript
Python删除n行后的其他行方法
2019/01/28 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
python连接mysql有哪些方法
2020/06/24 Python
Python list和str互转的实现示例
2020/11/16 Python
利用CSS3实现单选框动画特效示例代码
2016/09/26 HTML / CSS
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
Android interview questions
2016/12/25 面试题
影视动画专业个人的自我评价
2013/12/31 职场文书
运动会致辞稿50字
2014/02/04 职场文书
品质标语大全
2014/06/21 职场文书
缅怀先烈演讲稿
2014/09/03 职场文书
2014学习优秀共产党员先进事迹思想汇报
2014/09/14 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
OpenCV实现反阈值二值化
2021/11/17 Java/Android
面试中canvas绘制图片模糊图片问题处理
2022/03/13 Javascript