转载自:Django中related_name作用


我先定义两个模型,一个是作者,一个是作者出版的书籍,算是一对多的类型。

class Person(models.Model);name = models.CharField(verbose_name='作者姓名', max_length=10)age = models.IntegerField(verbose_name='作者年龄')class Book(models.Model):person = models.ForeignKey(Person, related_name='person_book')title = models.CharField(verbose_name='书籍名称', max_length=10)pubtime = models.DateField(verbose_name='出版时间')

如果我们要查询一个作者出版了哪些书籍的话,那我们要怎么做呢?
即通过一查询出多的那方面

先查询到作者的信息

person = Person.objects.fiter(你的条件)

返回一个person对象

接下来就查询person关联的所有书籍对象,我们在前面讲过的使用基于对象的查询方式,反向查询按照表名

book = person.book_set.all()

django 默认每个主表的对象都有一个是外键的属性,可以通过它来查询到所有属于主表的子表的信息。
这个属性的名称默认是以子表的名称小写加上_set()来表示,默认返回的是一个querydict对象,你可以继续的根据情况来查询等操作。

在实际项目中,我们使用最多的还是related_name
如果你觉得上面的定义比较麻烦的话,你也可以在定义主表的外键的时候,给这个外键定义好一个名称。要用related_name比如在Book表中:

person = models.ForeignKey(Person, related_name='person_books')

那么实现上面的需求,可以使用person.book_set.all()
也可以使用person.person_books.all()

Django中related_name的作用相关推荐

  1. django mysql connector,MySQL Connector / python在Django中不起作用

    我正在学习以MySQL为后端的Django. 我安装了Oracle的mysql连接器以与mysql连接. 但是,当我运行python manage.py时,出现此错误 Traceback (most ...

  2. Django 中related_name,%(app_label)s_%(class)s_related

    先看个model 1 from django.db import models 2 3 # Create your models here. 4 5 6 class Parent(models.Mod ...

  3. django中,中间件是什么以及中间件的作用

    中间件 Django中的中间件是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出.中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django ...

  4. [django]Django外键(ForeignKey)操作以及related_name的作用

    https://blog.csdn.net/hpu_yly_bj/article/details/78939748 related_name表面作用 加上 核心related_name作用 https ...

  5. Django中ORM操作

    一.ORM简介 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. ​ 简单的说,ORM是通过使用描述对象 ...

  6. django中如何用es_用Django轻松搜索ElasticSearch

    django中如何用es by Adam Wattis 通过亚当·沃蒂斯(Adam Wattis) 用Django轻松搜索ElasticSearch (ElasticSearch with Djang ...

  7. django中自定义标签和过滤器

    django中自定义标签和过滤器 原文:http://www.cnblogs.com/MnCu8261/p/5934203.html 纪念如何填了半天的坑,红色重点 想要实现自定义标签和过滤器需要进行 ...

  8. Django中Mysql数据库的使用

    django中内嵌了ORM框架,不需要直接面向数据库编程,而是定义模型类,通过模型类和对象完成数据表的增删改查操作. 使用django进行数据库开发的步骤如下: 配置数据库连接信息 在配置文件中注册 ...

  9. 如何在Django中以GROUP BY查询?

    本文翻译自:How to query as GROUP BY in django? I query a model: 我查询一个模型: Members.objects.all() And it ret ...

最新文章

  1. oracle10g_vista_,Vista系统 安装Oracle10g 不成功?
  2. 基于Ocelot的gRpcHttp网关
  3. 加油四班!加油佟穆!我们的征途是星辰大海!!!
  4. 2021-06-01 深入分析偏向锁、轻量级锁和重量级锁
  5. Python 之父 Guido van Rossum 宣布
  6. MySQL 面试,必须掌握的 8 个知识点
  7. Jenkins进阶系列之——08Jenkins纳入版本控制
  8. request.getInputStream中文乱码解决方案
  9. node创建新html页面,node创建服务器之展示html页面
  10. XML PULL SAX到底有什么区别?
  11. 从携程事件给我们警示
  12. ftl 页面使用java代码_在FTL文件中使用自定义的Java方法
  13. 一个Web前端实习生的简历
  14. Ethernet和802.3的区别及历史
  15. (13) IFC格式说明 (Industry Foundation Class)
  16. 初识Linux与运维
  17. sitemap 在线生成
  18. Luogu 1880 合并石子
  19. mysql未开启binlog恢复_mysql 开启binlog,并恢复数据操作
  20. 生鲜配送公司面临的几大痛点,你知道多少?

热门文章

  1. cairo-clock设置为自动启动后总是自动变为default主题
  2. 如何理解Nginx, WSGI, Flask之间的关系
  3. 5.3 递归最小二乘法
  4. wpf调用其他项目界面_WPF开发Prism框架实现一个简单播放器
  5. python的基本原理_Python函数基本使用原理详解
  6. python findall函数_python正则表达式之中的findall函数是什么?
  7. springboot报错---No identifier specified for entity: com.example.demo.entity.User
  8. Eclipse中clean项目的作用
  9. Swift UIlabel 的高级用法,文本显示表情,图片
  10. ant-design-pro使用服务器数据接口代理配置