Django 多条件多表查询实例问题

当时想做一个多条件查询,但是对于要查询的信息,是分布在不同的表里,这就涉及到了多表查询问题。

DjangoBook里提到了一些查询的方式,但是不够全面,就去百度搜了下。

当去网上百度搜多表查询,或多条件查询时,都能搜到,但是相对较综合点的信息,还是比较少。但是为了实现功能,

也思考了不少。下面贴上一些搜集来的资料。

关于多条件查询

1.

data = model.objects.filter(条件1)
if a==4:
    data = data.fiter(条件2)
if b==4:
    data = data.filter(条件3)

2.

kwargs = {}
if var1 != ‘NONE‘:
   kwargs[‘field1‘] = var1
if var2 is not None:
   kwargs[‘field2‘] = var2
if var3 is not None:
   kwargs[‘field3‘] = var3
if var4 is not None:
   kwargs[‘field4‘] = var4
quest = model.objects.filter(**kwargs)

3.

1 # 获取动态过滤调价
2 def getKwargs(data={}):
3      kwargs = {}
4      kwargs[‘state‘] = True
5      for (k , v)  in data.items() :
6         if v is not None and v != u‘‘ :
7                  kwargs[k] = v
8         return kwargs
searchCondition = {‘name__icontains‘ : name ,....}
kwargs = utils.getKwargs(searchCondition)
model_set = Model.objects.filter(**kwargs)

关于多表查询

A表作为B表的外键,当通过B表查询A表时候,可以通过__(两个下划线)的方式过滤A表的内容

基本有这两个知识,综合起来就可以进行多表条件查询了。

然后是一些自己的代码,就不发了。

时间: 2024-10-13 16:07:47

Django 多条件多表查询实例问题的相关文章

python 之 Django框架(orm单表查询、orm多表查询、聚合查询、分组查询、F查询、 Q查询、事务、Django ORM执行原生SQL)

12.329 orm单表查询 import os if __name__ == '__main__': # 指定当前py脚本需要加载的Django项目配置信息 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "orm_demo.settings") import django django.setup() # 启动Django项目 from app01 import models #返回QuerySet对象的方法: r

django中的跨表查询梳理

1.前言 最近在写一个小项目,里面主要涉及的就是表与表之间复杂的关系.当真正开发起来的时候,才发现自己对复杂的表关系间的查询有点混乱,趁着这几天的时间,重新梳理了一下. 2.概念 在开始之前,先明确几个基础概念: 正向查询:关联字段所在的表查询其关联表叫正向查询 反向查询:未写关联字段的表查询其关联表叫反向查询 # 书籍表 class Book(models.Model): name = models.CharField(max_length=32) publish = models.Forei

多表查询实例

查询练习 2.models.py 创建表关系 from django.db import models # Create your models here. # 1.老师表 class Teacher(models.Model): tid = models.AutoField(primary_key=True) tname = models.CharField(max_length=32) class Meta: db_table="teacher" def __str__(self)

三、Django学习之单表查询接口

查询接口 all() 查询所有结果,结果是queryset类型 filter(**kwargs) and条件关系:参数用逗号分割表示and关系 models.Student.objects.filter(id=1,name='dazhuang').update( name='大壮禅师', age = 78, ) 其中filter的参数也可以通过字典方式传入 odels.Student.objects.filter(**{'id':7,'name':'大壮禅师'}).update(age=100)

mysql多表查询实例结果及分析-2017.12.14

今天帮运营导数据时发现sql执行速度非常慢,嗯,按照之前的编写习惯,后来跟架构师一起分析讨论,改进了下,现记录分析如下 一.测试表.sql情况 set @bgDate = '20171213'; set @edDate = '20171213'; /*编号①*/ SELECT TA_ID,SUM(TB.amount),SUM(TB.fee) FROM (SELECT ORDER_NO,TA_ID FROM Table_A  WHERE TA_STATUS = 100 AND TA_CHANNEL

Oracle基础(五):多表查询

一.多表查询 (一)简单多表查询 1.多表查询的机制 1)SQL: SELECT * FROM emp; --14条记录 SELECT * FROM dept;--4条记录 SELECT * FROM emp,dept;--显示56条数据??为什么 2)分析: 先从 dept 选择一条记录(deptno=10).分别于 emp中的14条记录分别匹配.显示14条记录. 再从 dept 选择一条记录(deptno=20),分别于 emp中的14条记录分别匹配.显示14条记录. 依次类推. water

数据库 SQL 外键约束 多表查询

多表设计与多表查询 1.外键约束        表是用来保存现实生活中的数据的,而现实生活中数据和数据之间往往具有一定的关系,我们在使用表来存储数据时,可以明确的声明表和表之前的依赖关系,命令数据库来帮我们维护这种关系,像这种约束就叫做外键约束.          定义外键约束  foreign key(本表的列名 ordersid) references orders(id)(引用的表明及列名)     create table dept(         id int primary key

mysql第四篇:数据操作之多表查询

mysql第四篇:数据操作之多表查询 一.多表联合查询 #创建部门 CREATE TABLE IF NOT EXISTS dept ( did int not null auto_increment PRIMARY KEY, dname VARCHAR(50) not null COMMENT '部门名称' )ENGINE=INNODB DEFAULT charset utf8; #添加部门数据 INSERT INTO `dept` VALUES ('1', '教学部'); INSERT INT

MySQL之多表查询

阅读目录 一 多表联合查询 二 多表连接查询 三 复杂条件多表查询 四 子语句查询 五 其他方式查询 六 SQL逻辑查询语句执行顺序(重点) 七 外键约束 八 其他约束类型 九 表与表之间的关系 一.多表联合查询 #创建部门 CREATE TABLE IF NOT EXISTS dept ( did int not null auto_increment PRIMARY KEY, dname VARCHAR(50) not null COMMENT '部门名称' )ENGINE=INNODB D