Django高级查询方法总结

常用查询语句

all:查询所有

filter:条件查询

get:单条语句查询

order_by:排序查询

__set:映射查询(外键)

 

常见比较查询

__gt:大于

__gte:大于等于

__lt:小于

__lte:小于等于

__in:存在范围

__startswith:以什么开头

__endswith:以什么结尾

__range:范围

 

django模型自定义查询管理器

上述是django定义好的查询,如果想自定义,就需要重写manage,并将重写的类赋值给 objects,或者重新定义一个objects对象。

自定义查询管理器适用场景:少字段多频率表的插入和修改,或多频率表限制查询。

使用步骤

导入模块 

重写manage方法

在模型类中使用重写的方法

使用方法,例:GoodType.object.addType('水产蔬菜')

 

 

aggregate:聚合查询

聚合查询是做数据分析的数据库基础,通常使用聚合函数完成聚合查询。

mysql可以进行聚合查询,常用的方法有:count,sum,avg,max和min。

django也有相似的操作,需要先导入需要的方法。

 

mysql的语句为select count(id) from Goods;

django的语句如下(可以修改字段名称):

 

annotate:分组查询

查询每个类型的平均价格。

mysql中的写法:

select  AVG(price)  from  goods  group_by  goods_type

select  count(price)  from  goods  group_by  goods_type

django中ORM的用法:

先导入包

>>> from django.db.models import Sum
>>> from django.db.models import Avg
>>> from Store.models import *

按照goods_type分组,查询每个组价格的平均值

以goods_number分组,查询每个组价格的平均值

 

F 查询

F 查询,比较的是字段,当前查询条件只能和固定的值进行比较。

查询所有数量大于价格的商品

查询所有数量小于价格的商品

商品数量小于价格一半的数据(F查询可以进行数学运算)

 

Q 查询 

filter的查询条件固定是and关系,Q的出现补充了filter的缺陷,Q查询可以进行与和或的逻辑查询。

filter查询商品数量为2并且价格为25的商品。

Q查询支持逻辑and(&)和or(|)

查询商品数量为2或商品价格为25的商品。

Q通常对同一个条件查,如:查询商品价格为130或者商品价格为100的商品。

 

raw:原生查询

通常为了提高查询效率,工作当中更支持原生查询,ORM只被作为数据插入,修改, 删除的方法。

query 查看sql语句

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值