这段时间用django 做程序用到了一对多的关系的操作,下面分享一些心得体会,希望对大家有帮助。
我先定义两个模型,一个是作者,一个是作者出版的书籍,算是一对多的类型。
class Person(models.Model);
name = models.CharField('作者姓名', max_length=10)
age = models.IntegerField('作者年龄')
class Book(models.Model):
person = models.ForeignKey(Person, related_name='person_book')
title = models.CharField('书籍名称', max_length=10)
pubtime = models.DateField('出版时间')
如果我们要查询一个作者出版了哪些书籍的话,那我们要怎么做呢?
先查询到作者的信息
person = Person.objects.fiter(你的条件)
返回一个person对象
接下来就查询person关联的所有书籍对象
book = person.book_set.all()
django 默认每个主表的对象都有一个是外键的属性,可以通过它来查询到所有属于主表的子表的信息。
这个属性的名称默认是以子表的名称小写加上_set()来表示,默认返回的是一个querydict对象,你可以继续的根据情况来查询等操作。
如果你觉得上面的定义比较麻烦的话,你也可以在定义主表的外键的时候,给这个外键定义好一个名称。要用related_name比如:
person = models.ForeignKey(Person, related_name='person_set')
那么上面的话:book = person.book_set.all()
也可以用book = person.person_set.all()
上面的是查询是通过主表来查询子表的信。
下面我简单的说下通过子表来查询主表的信息。
假设我要查询一本书籍所关联的作者的信息,那我可以通过下面的步骤来实现:
假如我先得到了一个子表的对象。那我只要获取该对象关联主表的外键的熟悉,就可以得到主表的信息了。
比如我得到一个book对象,然后我想得到book对象的主表person的信息的话:
p = book.person
我个人感觉person有点像指针,存储着person主表对象的地址,呵呵!不过python没有指针这个概念,这是我觉的更好理解。
这篇文章涉及到的django相关的文章,感兴趣的可以看看: 提高django model效率的几个小方法, 老王python:django model的get和filter方法的区别
今天就说到这吧,希望能够对大家理解django 一对多关系操作有帮助,我先闪了,如果觉的说的不好,或者有意见的话,可以到下面留言吧,大家一起相互交流,欢迎拍砖!如果你对django 感兴趣的话,可以看看django教程
原创文章请注明转载自老王python,本文地址:http://www.cnpythoner.com/post/135.html
作者:老王@python python 教程
老王python,提供python相关的python 书籍,python 主机,django 教程和python 下载,希望大家能够喜欢!
分享到:
相关推荐
本项目“基于知识图谱的医疗问答系统”便是一个集成了Python、Django框架和MySQL数据库的优秀实例,它不仅适用于计算机毕业设计或课程设计,还能为开发者提供宝贵的实践经验。 首先,项目采用Python作为主要编程...
在模型文件中,我们可以定义字段、属性以及字段间的关系,如外键、一对多和多对多等。 3. **视图(Views)**:视图负责处理HTTP请求并返回响应。它们是应用逻辑的主要载体,可以是函数或者类。Django提供了多种视图...
【标题】"django-calendar-master" 是一个基于 Python 的 Django 框架开发的日历应用项目。这个项目的重点在于实现一个功能完备的日历管理模块,它能够帮助用户在 Web 应用程序中创建、查看和管理日历事件。 【描述...
在本节中,我们将深入探讨Django框架的关键知识点,这是构建高效、安全且可扩展的Web应用程序的基础。Django是一个用Python编写的开源Web框架,它遵循模型-视图-控制器(MVC)架构模式,提供了许多内置功能,使得...
- 模型之间的关联关系(如一对一、一对多等)及其应用场景; - 如何通过模型实现数据的查询和操作; - 高级模型技巧,如自定义Manager、元选项Meta等。 4. **第4章:URLs与视图(Views)** - **知识点概述**:本...
3. **模型(Models)**:学习Django的ORM(对象关系映射)系统,如何定义数据模型来与数据库交互,包括字段类型、选项、以及模型之间的关系。 4. **视图(Views)**:理解视图的概念,它是处理HTTP请求并返回HTTP...
在Django 2.0.4中,有以下几个重要的知识点: 1. **安装与设置**:Django 2.0.4可以通过pip进行安装,`pip install Django==2.0.4`。安装完成后,需要在Python环境中进行设置,包括创建项目和应用,配置settings.py...
这个简易版的网盘项目为初学者提供了一个了解Django框架如何处理文件操作和用户管理的实际示例,同时也对进阶开发者提供了一个可扩展的基础,他们可以在此基础上添加更多功能,如权限控制、文件预览、多文件上传等。
(思路是如此的,但是我的推荐效果可能不一定准确,最理想的状态是后台users-items映射关系数据,也就是用户对景点的评分以及景点图谱数据都输入到MKR模型中,通过多特征学习增强知识图谱在推荐系统中作用的这一模型...
【标签】"Django"进一步确认了这份资料的主题,Django框架在现代Web开发中扮演着重要角色,它提供了丰富的功能,如ORM(对象关系映射)用于数据库操作,内置的管理后台,强大的中间件机制,以及对RESTful API的支持...
### Django 1.8 官方文档知识点概览 #### 1. Django 文档概览 - **获取帮助**:本章节介绍了用户如何在遇到问题时寻求帮助,包括官方论坛、邮件列表等资源。 - **起步指南**:这部分是新手入门必备的教程,指导用户...
它涵盖了创建独立的、可在多个项目之间复用的Django应用的知识。 接着是关于Django内部的多个子系统的详细文档,比如: - Models and databases(模型和数据库):涵盖了Django的ORM(对象关系映射)系统,以及...
在本项目中,我们利用Django构建了一个功能完善的论坛,其中包括评论、回复、用户头像展示、排行榜、文章管理以及表单验证等多个关键模块。下面我们将详细探讨这些功能的实现及其背后的Django知识。 首先,Django的...
本章讲解了如何定义和使用模型,模型之间的关系(比如一对多、多对多),以及如何通过Django ORM(对象关系映射)来与数据库进行交互。 第4章:URLs和视图。本章说明了如何在Django中设置URL模式,并将其与视图函数...
### 关于《中文版 Django Book》 《中文版 Django Book》是一本全面介绍 ...本书通过详尽的章节内容,不仅覆盖了 Django 的基础知识,还深入到了各个领域的高级话题,非常适合希望全面掌握 Django 开发技术的读者。
**基于Django的网站平台系统源码详解** Django是一个高度强大的Python Web框架,它遵循MVT(Model-View-Template)设计...通过对这些内容的深入理解和实践,你将能够构建和维护一个功能丰富的基于Django的网站平台。
- **模型** 可以轻松地与其他模型建立关联关系,如一对多、多对多等。 **4. 视图层** - **视图** 是处理客户端请求并将数据返回给客户端的逻辑层。 - Django 提供了基于类的视图 (CBV),使得复用代码变得更加容易...
模型类还可以定义字段的验证规则和关联关系(一对一、一对多、多对多)。 8. **视图(View)**: 视图是处理请求并生成响应的核心组件。它们通常是函数或类,负责获取请求数据,处理业务逻辑,并调用模板生成HTML...
### Django中文开发手册知识点概述 #### 一、Django简介(第一章) ...以上是对《Django中文开发手册》的主要内容进行了概括性的总结,旨在帮助读者更好地理解和掌握Django框架的相关知识和技术要点。
本文将深入探讨 Django 1.8.2 的核心知识点,帮助读者掌握这一强大的 Web 开发框架。 一、Django 概述 Django 是一个基于 Python 的开源 Web 应用框架,遵循 MTV(Model-Template-View)设计模式。它强调“干(DRY...