Django 查询数据

通过django提供的 QuerySet API,可以非常方便的查询数据,从数据库中查询出来的结果是一个集合,这个集合叫做 QuerySet。

QuerySet有个很好的性能机制,即QuerySets是懒惰的,只有遇到类似save,print等方法才会真正的操作数据库。

1,查询所有数据

使用all()方法,可以查询某张表的所有数据

比如要查询 任务表 里所有数据,可以这样写:

task_list = Tasks.objects.all()

2,按条件查询

使用 filter()方法,可以按条件查询数据

比如要查询 任务表 里 任务名称为 abc 的数据:

task_list = Tasks.objects.filter(task_name='abc')

filter 方法可以多条件查询,但要注意多个条件是 ‘并’的关系

比如要查询 任务表 里,任务名称为xxx,且用户为‘张三’的数据:

task_list = Tasks.objects.filter(task_name='abc', task_user='张三')

以上都是条件的值必须完全匹配才能查询到数据,如 task_name='abc',只能精准查询到abc的数据

django还提供一些特殊的查询方式:

__iexact

表示不区大小写查询,如 Tasks.objects.filter(task_name__iexact='acb')

可以查询到 task_name 等于 abc,Abc, aBc,abC,ABC的数据。

__contains

表示包含查询,如 Tasks.objects.filter(task_name__contains='acb')

可以查询到 task_name 包含有  abc 的数据,如xabc,yabcd,abcyu等。

__icontains

表示不区分大小写的包含查询,如 Tasks.objects.filter(task_name__icontains='acb')

可以查询到 xabc,xAbc,yabCu等数据

__in

in查询,Tasks.objects.filter(task_user__in=['张三', '李四'])

__startswith

表示以什么开头的查询,如 Tasks.objects.filter(task_name__startswith='acb')

可以查询以到如 abcaa,abcxxx,abckkk等以abc开头的数据

__endswith

表示以什么结尾的查询,如 Tasks.objects.filter(task_name__endswith='acb')

可以查询到如 iuabc,xxabc等以abc结尾的数据

3,排序

使用order_by()方法可以查询结果排序,默认按正序排

Tasks.objects.all().order_by('task_end_date')

可以在排序字段前面加-,表示倒序

Tasks.objects.all().order_by('-task_end_date')

4,排除条件的查询

exclude方法是查询除排满足条件的数据

Tasks.objects.exclude(task_user__contains="张三") 

表示查询排除包含  张三 的数据

Tasks.objects.filter(task_name__contains="abc").exclude(task_user='张三')

表示查询任务名称包含abc,但排除张三的数据

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值