查看原生sql
Teacher.objects.filter(fans__gte=500).order_by('nickname')
str(xxx.query)
字段双下划线,匹配条件
objects.get 返回模型列
filter 返回 query set
from django.shortcuts import render
from django.views.generic import View
from .models import *
def course_view(request):
# 1.查询、检索、过滤
teachers = Teacher.objects.all()
print(teachers) # 返回查询集
# <QuerySet [<Teacher: Teacher object (holy)>, <Teacher: Teacher object (Jack)>, <Teacher: Teacher object (Allen)>]>
teacher1 = Teacher.objects.get(nickname='Jack') # 返回一条结果
print(teacher1, type(teacher1))
# Teacher object (Jack) <class 'course.models.Teacher'>
teacher2 = Teacher.objects.filter(fans__gte=500) # QuerySet 可以是多条结果
for t in teacher2:
print(f'讲师姓名{t.nickname}--粉丝数{t.fans}')
# 讲师姓名Jack--粉丝数666
# 讲师姓名Henry--粉丝数899
# 2. 字段字符匹配,大小写敏感
teacher3 = Teacher.objects.filter(fans__in=[666, 1200])
print(teacher3)
# <QuerySet [<Teacher: Teacher object (Jack)>]>
teacher4 = Teacher.objects.filter(nickname__icontains='A')
print(teacher4)
# <QuerySet [<Teacher: Teacher object (Jack)>, <Teacher: Teacher object (Allen)>]>
# 3.结果切片、排序、链式查询
print(Teacher.objects.all()[:1])
teacher5 = Teacher.objects.all().order_by('-fans')
for teacher in teacher5:
print(teacher.nickname, teacher.fans)
# Henry 899
# Jack 666
# Allen 123
# holy 0
print(Teacher.objects.filter(fans__gte=500).order_by('nickname'))
# <QuerySet [<Teacher: Teacher object (Henry)>, <Teacher: Teacher object (Jack)>]>
# 4. 查看执行的原生SQL str(xx.query)
print(str(Teacher.objects.all().query))
# SELECT "course_teacher"."nickname", "course_teacher"."introduction",
# "course_teacher"."fans", "course_teacher"."created_at", "course_teacher"."updated_at" FROM "course_teacher"
return render(request, 'course.html')
query来显示原生的sql语句
查看原生的sql:
orm查询语句.query
query: 对xxx提出疑问
.all().order_by("xxx") 升序排列
.all().order_by("-xxx") 降序排列
get需要根据唯一键查询,返回一个对象,而不是QuertSet
filter 可输入查询条件(语法格式 属性__in/gte/exact/gt/it/lte/range), 返回QuertSet
Meta中
ordering = ['pid'] 根据pid字段排序
QuerySet 查询集 是一个可迭代的对象。
‘’‘’‘’‘看了看ik·
第六章!!!!
查询集介绍:
查询、检索、过滤
teacher = Teacher.objects.all()
teacher = Teacher.objects.get(主键、唯一键)返回一条结果
teacher = Teacher.objects.filter(fans__gte =) 返回多条结果 字段数据匹配大小写敏感 (fans__gte =大于等于、fans__exact刚好等于、fans__gt大于、fans__in在某某之内 、fans__isnull是否为空、fans__lt小于、fans__lte小于等于、fans__range在某某范围之内、、、、)
结果切片、排序、链式查询
Teacher.Object.all()[:1]
Teacher.Object.all().order_by('fans')/('-fans')
Teacher.Object.filter(fans__get).order_by('nickname')
查看执行的原生sql:
str(语句例如Teacher.Object.filter(fans__get).order_by('nickname').query)