首页 > 其他分享 >Django:关联查询

Django:关联查询

时间:2024-08-20 14:26:46浏览次数:4  
标签:__ Django name models 模型 查询 book 关联

一、数据准备

1、创建应用books

2、setting.py中注册应用

3、定义模型类

from django.db import models


# Create your models here.
# 定义图书模型类Book
class Book(models.Model):
    title = models.CharField(max_length=20, verbose_name='图书名称')
    read = models.IntegerField(default=0, verbose_name='阅读量')
    comment = models.IntegerField(default=0, verbose_name='评论量')

    def __str__(self):
        return self.title

    class Meta:
        db_table = 't_book'


# 定义人物表 Person
class Person(models.Model):
    name = models.CharField(max_length=20, verbose_name='人物姓名')
    gender = models.BooleanField(default=True, verbose_name='性别')
    book = models.ForeignKey(Book, verbose_name='所属图书', on_delete=models.CASCADE)

    def __str__(self):
        return self.name

    class Meta:
        db_table = 't_person'

4、激活模型

  • 生成迁移:python manage.py makemigrations

  • 执行迁移:python manage.py migrate

5、Admin注册

6、数据准备

登录Admin后台添加一些测试数据

 

 二、通过对象执行关联查询

由一到多的访问语法:

# 一对应的模型类对象.多对应的模型类名小写_set
# 查询编号为1的图书。
book=Book.objects.get(id=1)
# 获得book图书的所有人物。
book.person_set.all()

由多到一的访问语法:

#多对应的模型类对象.多对应的模型类中的关系类属性名
p = Person.objects.get(id=1)
p.book

访问一对应的模型类关联对象的id语法:

#多对应的模型类对象.关联类属性_id
p = Person.objects.get(id=1)
p.book_id

 三、通过模型类实现关联查询

由一模型类条件查询多模型类数据:

语法如下:
关联模型类名小写__属性名__条件运算符=值

如果没有"__运算符"部分,表示等于,结果和sql中的inner join相同

# 查询图书,要求图书中人物的描述包含'宝'。
list = Book.objects.filter(person__name__contains='宝')

由多模型类条件查询一模型类数据:

语法如下:

一模型类关联属性名__一模型类属性名__条件运算符=值
# 查询书名为“天龙八部”的所有人物。
list = Person.objects.filter(book__title='天龙八部')

 

标签:__,Django,name,models,模型,查询,book,关联
From: https://www.cnblogs.com/Durant0420/p/18369330

相关文章

  • Django:聚合函数
    作用:对查询结果进行聚合操作(等同数据库的聚合函数)函数作用sum求和count计数avg平均值max最大值min最小值1.直接使用直接使用聚合函数查询返回值是一个数字计数:count#统计id大于3的新闻类别数TypeInfo.objects.count()求和:所有新闻的阅读总......
  • 计算机毕业设计Python深度学习游戏推荐系统 Django PySpark游戏可视化 游戏数据分析
    基于Spark的TapTap游戏数据分析系统技术栈:  -python  -django  -scrapy  -vue3  -spark  -element-plus  -echarts   功能板块:0.爬虫模块:  通过scrapy抓取taptap游戏网站数据,从分类页开始抓取全站游戏的数据1.首页......
  • Django:F对象和Q对象
    一、F对象之前的查询都是对象的属性与常量值比较,两个属性怎么比较呢?作用:用于类属性之间的比较#使用之前需要先导入fromdjango.db.modelsimportF#查询阅读量大于等于评论量的新闻NewsInfo.objects.filter(read__gte=F('comment'))可以在F对象上使用算数运算#查......
  • Django:查询基础语法
    一、数据准备1、在models.py中定义一个新闻和新闻类型的模型类classNewsInfo(models.Model):"""新闻表"""title=models.CharField(max_length=100,help_text='新闻标题',verbose_name='新闻标题',blank=True,default='')content=m......
  • Oracle索引使用原则:优化查询性能的关键
    1.索引信息的查询:要获取数据库中索引的相关信息,如索引类型、所在表、是否唯一索引等,可以查询与索引相关的数据字典视图。常用的数据字典视图包括dba_indexes、dba_ind_columns、user_indexes和user_ind_columns等。dba_indexes和dba_ind_columns视图需要DBA权限才能访问,......
  • 高校爬虫可视化系统-基于python|Django|flask的高校爬虫可视化系统|大学数据抓取与展
    博主介绍:✌十余年IT大项目实战经验、在某机构培训学员上千名、专注于本行业领域✌技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫+大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战项目。主要内容:系统功能设计、开题报告......
  • sql Server 递归查询
    插入数据insertintoDepartment(Id,Name,ParentId)VALUES(1,'总经办',0),(2,'研发部',1),(3,'人事部',1),(4,'设计部',2),(5,'行政部',3) 查询意图:查询某个部门下所有子部门包括本部门所在层级WITHCTEAS(SELECTId,0......
  • 基于django+vue框架的实时新闻推送平台edpjq【开题报告+程序+论文】计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在信息爆炸的时代,新闻资讯的时效性成为了媒体竞争的关键。随着互联网技术的飞速发展,人们获取新闻的方式已从传统的报纸、电视转向了手机、......
  • 基于django+vue框架的教学资源管理系统【开题报告+程序+论文】计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,教育领域正经历着前所未有的变革。传统的教学模式逐渐向数字化、网络化、智能化方向转型,教学资源管理系统作为教育......
  • 基于django+vue框架的动漫视频网站6ygmo【开题报告+程序+论文】计算机毕
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网的飞速发展和数字媒体技术的不断进步,动漫文化在全球范围内迅速普及,成为年轻人喜爱的文化形式之一。动漫视频网站作为传播动漫内......