Django:关联查询

news/2024/9/12 15:19:17/文章来源:https://www.cnblogs.com/Durant0420/p/18369330

一、数据准备

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.titleclass 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.nameclass 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='天龙八部')

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/784280.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1线性回归

一、概念 线性回归是机器学习中有监督机器学习下的一种算法。 回归问题主要关注的是因变量y(需要预测的值,可以是一个也可以是多个)和一个或多个数值型的自变量x(预测变量)之间的关系。需要预测的值:目标变量(target,y,连续值预测变量)。 影响目标变量的因素:X1..Xn…

设计模式之cglib动态代理

什么是动态代理呢?动态代理就是在java进程运行时,通过字节码技术,动态的生成某个类的代理类。在这个代理类中,我们可以做一些额外的操作,一方面仍然保持原有的方法的能力,另外一方面还增强了这些能力。听着是不是AOP有点像,没错,动态代理就是AOP的技术基石。在这之前我…

yarn 失败

1、输入yarn后,下载失败报错 connect ETIMEDOUT 10.136.33.5:8081at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16)[1/4] Resolving packages... [2/4] Fetching packages... info There appears to be trouble with your network connection. Retrying... i…

AtCoder ABC 367

题解前言 本题解部分思路来自于网络,仅供参考。 A - Shout Everyday 题目大意 给定 Takahashi 每天的睡觉时间和起床时间,求 Takahashi 在 $A$ 时是睡着的还是清醒的。 解题思路 根据题意模拟即可。 code #include <bits/stdc++.h> using namespace std; int main() {i…

Ros2 MoveIt2 MoveGroup C++接口

在 MoveIt 中,最简单的用户界面是通过 MoveGroupInterface 类。 它为用户可能想要执行的大多数操作提供了易于使用的功能,特别是设置关节或姿势目标、创建运动计划、移动机器人、将对象添加到环境中以及从机器人上连接/分离对象。 此接口通过 ROS 主题、服务和操作与 MoveGro…

春秋云镜 Brute4Road

春秋云镜 Brute4Road先用fscan扫一下内网尝试打redis主从 python3 redis-rogue-server.py --rhost 39.98.122.75 --lhost 123.57.23.40 需要在vps下使用,选择r,然后输入要反弹的ip,port 使用pty获得交互式shell python -c import pty;pty.spawn("/bin/bash")尝试UID提…

【OpenCV教程】轮廓检测过程

@目录1.查找轮廓1.1 API1.2 轮廓层级检测模式:索引号(层级)RETR_EXTERNAL(索引顺序:从右下到左上)RETR_LIST(recommended)(索引顺序:从右下到左上,由外到内)RETR_CCOMP(not recommended)(索引顺序:由内到外,从右下到左上)RETR_TREE(recommended)1.3 轮廓坐标点储…

题解:P10279 [USACO24OPEN] The Winning Gene S

思路 建议升蓝。 算法一 考虑暴力。 我们先枚举 \(K,L\),考虑如何求解。 直接枚举每一个 \(K\)-mer,再枚举里面的每一个长度为 \(L\) 的子串,找到最大的子串并在起始部分打一个标记。最后直接看有几个地方被打标记就行。 时间复杂度:\(O(n^4)\)。预计能过测试点 \(1-4\)。 …

C10-02-HTML示例

HTML:02-1.html 基本功能实现:<a>和<img>标签联合使用及<img src="#"> 图片资源绝对路径引用JS使用:行内式、内嵌式、引入外部JS<input>标签:输入标签文本框<!DOCTYPE html> <html lang="en"> <head><me…

异常与中断的概念以及处理流程

1.CPU理解的中断CPU 在运行的过程中,也会被各种“异常”打断。这些“异常”有:指令未定义 指令、数据访问异常 SWI(软中断) 快中断 中断中断也是 “异常” 的一种,导致中断发生的情况有按键 定时器 ADC转换完成 uart 发送完数据,收到收据 等等 这些众多的“中断源”,汇集到…

wifi基础(一):无线电波与WIFI信号干扰、衰减

liwen01 2024.08.18 前言 无论是在产品开发还是在日常生活中,在使用无线网络的时候,都会经常遇到一些信号不好的问题,也会产生不少疑问:为什么我们在高速移动的高铁上网络会变慢? 为什么 5G WiFi 的穿墙能力没有 2.4G 的好? 为什么在对 WiFi 进行 iperf 拉距测试的时候,…

监理单位项目管理系统:选择前你必须知道的事

国内外主流的 10 款监理单位项目管理系统对比:PingCode、Worktile、Primavera P6、Microsoft Project、Wrike、Asana、Trello、红圈、泛微项目协同工具、广联达。在寻找适合监理单位的项目管理系统时,许多专业人士面临着复杂性和成本效益的双重挑战。一个好的系统不仅需要具备…