`
m4774411wang
  • 浏览: 111852 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
社区版块
存档分类
最新评论

django 一对多关系的知识

 
阅读更多

这段时间用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 下载,希望大家能够喜欢!

分享到:
评论

相关推荐

    django项目实战之基于知识图谱的医疗问答系统(源码+说明+演示视频).zip

    本项目“基于知识图谱的医疗问答系统”便是一个集成了Python、Django框架和MySQL数据库的优秀实例,它不仅适用于计算机毕业设计或课程设计,还能为开发者提供宝贵的实践经验。 首先,项目采用Python作为主要编程...

    django4.0官方中文文档

    在模型文件中,我们可以定义字段、属性以及字段间的关系,如外键、一对多和多对多等。 3. **视图(Views)**:视图负责处理HTTP请求并返回响应。它们是应用逻辑的主要载体,可以是函数或者类。Django提供了多种视图...

    django-calendar-master_pythondjango_calendar_django_

    【标题】"django-calendar-master" 是一个基于 Python 的 Django 框架开发的日历应用项目。这个项目的重点在于实现一个功能完备的日历管理模块,它能够帮助用户在 Web 应用程序中创建、查看和管理日历事件。 【描述...

    2024-Django平台开发-Django知识点(四)

    在本节中,我们将深入探讨Django框架的关键知识点,这是构建高效、安全且可扩展的Web应用程序的基础。Django是一个用Python编写的开源Web框架,它遵循模型-视图-控制器(MVC)架构模式,提供了许多内置功能,使得...

    Pro Django

    - 模型之间的关联关系(如一对一、一对多等)及其应用场景; - 如何通过模型实现数据的查询和操作; - 高级模型技巧,如自定义Manager、元选项Meta等。 4. **第4章:URLs与视图(Views)** - **知识点概述**:本...

    python django 基础讲解

    3. **模型(Models)**:学习Django的ORM(对象关系映射)系统,如何定义数据模型来与数据库交互,包括字段类型、选项、以及模型之间的关系。 4. **视图(Views)**:理解视图的概念,它是处理HTTP请求并返回HTTP...

    Django-2.0.4 Django-2.0.4

    在Django 2.0.4中,有以下几个重要的知识点: 1. **安装与设置**:Django 2.0.4可以通过pip进行安装,`pip install Django==2.0.4`。安装完成后,需要在Python环境中进行设置,包括创建项目和应用,配置settings.py...

    django简易版网盘

    这个简易版的网盘项目为初学者提供了一个了解Django框架如何处理文件操作和用户管理的实际示例,同时也对进阶开发者提供了一个可扩展的基础,他们可以在此基础上添加更多功能,如权限控制、文件预览、多文件上传等。

    基于django多模态知识图谱的智能旅游推荐系统源码.zip

    (思路是如此的,但是我的推荐效果可能不一定准确,最理想的状态是后台users-items映射关系数据,也就是用户对景点的评分以及景点图谱数据都输入到MKR模型中,通过多特征学习增强知识图谱在推荐系统中作用的这一模型...

    Django企业开发实战.源码

    【标签】"Django"进一步确认了这份资料的主题,Django框架在现代Web开发中扮演着重要角色,它提供了丰富的功能,如ORM(对象关系映射)用于数据库操作,内置的管理后台,强大的中间件机制,以及对RESTful API的支持...

    django1.8官方文档

    ### Django 1.8 官方文档知识点概览 #### 1. Django 文档概览 - **获取帮助**:本章节介绍了用户如何在遇到问题时寻求帮助,包括官方论坛、邮件列表等资源。 - **起步指南**:这部分是新手入门必备的教程,指导用户...

    Django官方Docs-1.8

    它涵盖了创建独立的、可在多个项目之间复用的Django应用的知识。 接着是关于Django内部的多个子系统的详细文档,比如: - Models and databases(模型和数据库):涵盖了Django的ORM(对象关系映射)系统,以及...

    python的Django框架完成一个论坛

    在本项目中,我们利用Django构建了一个功能完善的论坛,其中包括评论、回复、用户头像展示、排行榜、文章管理以及表单验证等多个关键模块。下面我们将详细探讨这些功能的实现及其背后的Django知识。 首先,Django的...

    Pro Django 2nd Marty Alchin 2013第二版

    本章讲解了如何定义和使用模型,模型之间的关系(比如一对多、多对多),以及如何通过Django ORM(对象关系映射)来与数据库进行交互。 第4章:URLs和视图。本章说明了如何在Django中设置URL模式,并将其与视图函数...

    中文版django book

    ### 关于《中文版 Django Book》 《中文版 Django Book》是一本全面介绍 ...本书通过详尽的章节内容,不仅覆盖了 Django 的基础知识,还深入到了各个领域的高级话题,非常适合希望全面掌握 Django 开发技术的读者。

    基于Django的网站平台系统源码

    **基于Django的网站平台系统源码详解** Django是一个高度强大的Python Web框架,它遵循MVT(Model-View-Template)设计...通过对这些内容的深入理解和实践,你将能够构建和维护一个功能丰富的基于Django的网站平台。

    Django1.6 官方文档

    - **模型** 可以轻松地与其他模型建立关联关系,如一对多、多对多等。 **4. 视图层** - **视图** 是处理客户端请求并将数据返回给客户端的逻辑层。 - Django 提供了基于类的视图 (CBV),使得复用代码变得更加容易...

    django框架课件.zip

    模型类还可以定义字段的验证规则和关联关系(一对一、一对多、多对多)。 8. **视图(View)**: 视图是处理请求并生成响应的核心组件。它们通常是函数或类,负责获取请求数据,处理业务逻辑,并调用模板生成HTML...

    django中文开发手册

    ### Django中文开发手册知识点概述 #### 一、Django简介(第一章) ...以上是对《Django中文开发手册》的主要内容进行了概括性的总结,旨在帮助读者更好地理解和掌握Django框架的相关知识和技术要点。

    django 1.8.2官方中文文档

    本文将深入探讨 Django 1.8.2 的核心知识点,帮助读者掌握这一强大的 Web 开发框架。 一、Django 概述 Django 是一个基于 Python 的开源 Web 应用框架,遵循 MTV(Model-Template-View)设计模式。它强调“干(DRY...

Global site tag (gtag.js) - Google Analytics