Django中related_name作用
相当于我们使用related代替了在通过一个对象查询出多个对象集合时,使用表名_set来获取
我先定义两个模型,一个是作者,一个是作者出版的书籍,算是一对多的类型。 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作用的更多相关文章
- django中related_name的作用和用法
其实可以就理解为,一对多关系拿对象的解决 可以把引用理解为主从关系 主引用从,即一对多 , 注意外键字段是放在多的一端的,比如一个班级class 有很多同学 students,那么就在students ...
- Django 中related_name,"%(app_label)s_%(class)s_related"
先看个model from django.db import models # Create your models here. class Parent(models.Model): name = ...
- Django中各目录文件的作用
一般的项目结构如下(大同小异) my_site是一个项目,blog是项目下的应用之一,可以使用创建命令创建更多的应用. 最上层的django文件夹: 自己手动创建,名字随意. 第二层my_site文件 ...
- Django中的Model继承
Django 中的 model 继承和 Python 中的类继承非常相似,只不过你要选择具体的实现方式:让父 model 拥有独立的数据库:还是让父 model 只包含基本的公共信息,而这些信息只能由 ...
- Django中的ORM
Django中ORM的使用. 一.安装python连接mysql的模块:MySQL-python sudo pip install MySQL-python 安装完成后在python-shell中测试 ...
- Django中ORM介绍和字段及其参数
ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述 ...
- Django中ORM介绍
Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...
- Django中ORM介绍和字段及字段参数
Object Relational Mapping(ORM) 1 ORM介绍 1.1 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对 ...
- Django 中的 model 继承
Django 中的 model 继承和 Python 中的类继承非常相似,只不过你要选择具体的实现方式:让父 model 拥有独立的数据库:还是让父 model 只包含基本的公共信息,而这些信息只能由 ...
随机推荐
- Ant Design按需加载
不eject情况下配置antd按需加载 1.安装 react-app-rewired yarn add react-app-rewired 2. 项目根目录下新建 config-overrides.j ...
- 荣耀5.0以上手机(亲测有效)激活xposed框架的经验
对于喜欢搞机的朋友而言,大多时候会使用到xposed框架及其种类繁多功能强悍的模块,对于5.0以下的系统版本,只要手机能获得Root权限,安装和激活xposed框架是非常简便的,但随着系统版本的不断迭 ...
- Android 注解框架对比
Java的注解(Annotation)相当于一种标记,在程序中加入注解就等于为程序打上某种标记,标记可以加在包,类,属性,方法,本地变量上.然后你可以写一个注解处理器去解析处理这些注解(人称编译时注解 ...
- .net c#将数据库数据对象转换为实体值对象
using System; using System.Data; namespace Sunlib { public static class DataHelper { //将数据库数据对象转换为实体 ...
- Linux(CentOS7)压缩和解压缩war包、tar包、tar.gz包命令
一.Linux版本 二.解压缩.tar.gz包到当前目录 tar -xzvf apache-tomcat-7.0.90.tar.gz 三.将指定文件压缩成.tar.gz包 tar -czf apach ...
- react-router(v4)
概要 开发单页应用, 首先绕不开的内容就是路由, react router v4 版本是最新的版本. 和之前的版本相比, 成熟了很多, 也简单了很多, 使用起来更加方便. 核心 component r ...
- EasyUI之DataGird动态组合列
Dojo.ExtJS.Jquery(EasyUI.jQgrid.ligerui.DWZ).还有asp.net中的服务器控件.当然也少不了HTML 标签之table标签了.其中dojo.ExtJS.Jq ...
- Exception in thread "main" org.I0Itec.zkclient.exception.ZkAuthFailedException: Authentication failure is thrown while creating kafka topic
Exception in thread "main" org.I0Itec.zkclient.exception.ZkAuthFailedException: Authentica ...
- FineUIPro/Mvc/Core v5.4.0即将发布(Core基础版,新功能列表)!
FineUIPro/Mvc/Core v5.4.0 即将于 2019-03-04 发布,目前官网示例已更新,先睹为快:http://pro.fineui.com/http://mvc.fineui.c ...
- 使用 JS 输出螺旋矩阵
关于螺旋矩阵 这是我曾经遇到过的面试题,在 LeetCode 上找到了题目的原型,难度中等.题目描述如下: 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中 ...