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,但排除张三的数据
该文章对你有帮助吗,求分享转发: 分享到QQ空间 分享给QQ好友