Django ORM filter 过滤对象

本文详细介绍了Django ORM如何执行各种数据库查询操作,包括使用`distinct()`去除重复数据,根据时间范围筛选,应用不等于条件过滤,以及通过`id`、`CashRatio`、`TickerSymbol`等字段进行精确、范围、包含和不包含查询。同时,还展示了如何按字段排序和使用`Q`对象进行复杂查询。这些示例涵盖了Django ORM的基本用法,帮助开发者高效地操作数据库。
摘要由CSDN通过智能技术生成

orm语句去重  distinct()

去重.distinct()

筛选时间区间

过滤不等于条件

  1. from django.db.models import Q

  2. myapps = App.objects.filter(~Q(name= ''))

1. 查找id大于100的对象
SQL语法

select * from Fundamentals where id > 100

Python ORM fiter 过滤语法

Fundamentals.objects.filter(id__gt=100)

2. 查找id大于等于100的对象

SQL语法

select * from Fundamentals where id >= 100

Python ORM fiter 过滤语法

Fundamentals.objects.filter(id__gte=100)

3. 查找id小于100的对象

SQL语法

select * from Fundamentals where id < 100

Python ORM fiter 过滤语法

Fundamentals.objects.filter(id__lt=100)

4. 查找id小于等于100的对象

SQL语法

select * from Fundamentals where id <= 100

Python ORM fiter 过滤语法

Fundamentals.objects.filter(id__lte=100)

5. 查找id大于1并且小于10的对象

SQL语法

select * from Fundamentals where id > 1 and id < 10

Python ORM fiter 过滤语法

Fundamentals.objects.filter(id__gt=1, id__lt=10)

6. 查找id包含(10,20,30)的对象

SQL语法

select * from Fundamentals where id in (10,20,30)

Python ORM fiter 过滤语法

Fundamentals.objects.filter(id__in=[10,20,30])

7. 查找id不包含(10,20,30)的对象

SQL语法

select * from Fundamentals where id not in (10,20,30)

对应SQL:select * from User where id not in (11,22,33)
User.objects.exclude(id__in=[11, 22, 3])

Python ORM fiter 过滤语法

Fundamentals.objects.filter(id__notin=[10,20,30])

8. 查找CashRatio字段不为空的对象

SQL语法

select * from Fundamentals where CashRatio is not null

Python ORM fiter 过滤语法

Fundamentals.objects.filter(CashRatio__isnull=True)

9. 查找TickerSymbol字段包含‘AA’的对象

SQL语法

select * from Fundamentals where TickerSymbol like '%AA%'

Python ORM fiter 过滤语法(区分大小写)

Fundamentals.objects.filter(TickerSymbol__contains="AA")

Python ORM fiter 过滤语法(不区分大小写)

Fundamentals.objects.filter(TickerSymbol__icontains="aa")

10. 查找TickerSymbol字段是‘AAL’的对象

SQL语法

select * from Fundamentals where TickerSymbol = 'AAL'

Python ORM fiter 过滤语法(区分大小写)

Fundamentals.objects.filter(TickerSymbol__exact="AAL")

Python ORM fiter 过滤语法(不区分大小写)

Fundamentals.objects.filter(TickerSymbol__iexact="aal")

11. 查找id从3-8的所有对象

SQL语法

select * from Fundamentals where id between 3 and 8

Python ORM fiter 过滤语法

Fundamentals.objects.filter(id__range=[3, 8])

12. 查找TickerSymbol字段以‘A’开头的对象

SQL语法

select * from Fundamentals where TickerSymbol like 'A%'

Python ORM fiter 过滤语法(区分大小写)

Fundamentals.objects.filter(TickerSymbol__startswith='A')

Python ORM fiter 过滤语法(不区分大小写)

Fundamentals.objects.filter(TickerSymbol__istartswith='a')

13.查找TickerSymbol字段值为‘AAL’的对象并按照id进行排序

SQL语法

select * from Fundamentals where TickerSymbol = 'AAL' order by id

Python ORM fiter 过滤语法(正序)

Fundamentals.objects.filter(TickerSymbol='AAL').order_by('id')

Python ORM fiter 过滤语法(倒序)

Fundamentals.objects.filter(TickerSymbol='AAL').order_by('-id')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值