单表的查询

由于查询条件比较多,也是比较常用的,因此单独一小章节来介绍

一、查询操作(功能会比较多)

  • 1、根据id来查询,返回一个对象

    
    def test(request):
        result = StudentModal.objects.get(pk=1)
        # result = StudentModal.objects.get(name='哈哈')
        print(result.name)
        return HttpResponse('ok')
    
  • 2、使用all()查询全部数据

    def test(request):
        result = StudentModal.objects.all()
        print(result)
        return HttpResponse('ok')
    
  • 3、使用first()基于全部查询的数据中取第一个(同样也有last()函数)

    def test(request):
        result = StudentModal.objects.all().first()
        return HttpResponse('ok')
    
  • 4、由于使用all()查询的结果是QuerySet数据类型,类似list可以使用切片操作

    def test(request):
        result = StudentModal.objects.all()[0]
        print(type(result))
        print(result)
        return HttpResponse('ok')
    
  • 5、使用filter(字段='值')函数过滤数据

    def test(request):
        result = StudentModal.objects.filter(name='张三')
        print(type(result))
        print(result)
        return HttpResponse('ok')
    
  • 6、values()的使用,返回的是一个QuerySet类型,里面是字典

    上面我们没有使用values()的时候查询语句编译为SQL语句是select * from 表名使用values('字段1', '字段2'...),如果编译SQL语句是select 字段1,字段2...from 表

    def test(request):
        result = StudentModal.objects.filter(name='张三').values('name', 'age')
        print(type(result))
        print(result)
        return HttpResponse('ok')
    
  • 7、values_list()的使用,返回的是一个QuerySet类型,里面是元祖

    def test(request):
        result = StudentModal.objects.filter(name='张三').values_list('name', 'age')
        print(type(result))
        print(result)
        return HttpResponse('ok')
    
  • 8、使用order_by('排序字段')排序(默认是升序,也没有降序的)

    def test(request):
        result = StudentModal.objects.all().order_by('age').values('name', 'age')
        print(type(result))
        print(result)
        return HttpResponse('ok')
    
  • 9、使用reverse()来降序排列数据

    def test(request):
        result = StudentModal.objects.all().order_by('age').values('name', 'age').reverse()
        print(type(result))
        print(result)
        return HttpResponse('ok')
    
  • 10、使用distinct('字段')过滤重复字段

    def test(request):
        result = StudentModal.objects.all().order_by('age').values('name', 'age').reverse().distinct('name')
        print(type(result))
        print(result)
        return HttpResponse('ok')
    
  • 11、count()计数

    def test(request):
        result = StudentModal.objects.all().count()
        print(type(result))
        print(result)
        return HttpResponse('ok')
    
  • 12、first()last()的使用,返回一个对象

    def test(request):
        result = StudentModal.objects.first()
        print(type(result))
        print(result)
        return HttpResponse('ok')
    
  • 13、exclude()不包含

    def test(request):
        result = StudentModal.objects.exclude(name='张三').values('name', 'age')
        print(type(result))
        print(result)
        return HttpResponse('ok')
    

二、双下划线(__)的使用户

所谓的双下划线是指字段__属性

  • 1、大于字段__gt与小于字段__lt

    def test(request):
        result = StudentModal.objects.filter(age__gt=15, age__lt=100).values('name', 'age')
        print(type(result))
        print(result)
        return HttpResponse('ok')
    
  • 2、大于等于字段__gte与小于等于字段__lte的使用

  • 3、包含字段__contains区分大小写

    def test(request):
        result = StudentModal.objects.filter(name__contains='张').values('name', 'age')
        print(type(result))
        print(result)
        return HttpResponse('ok')
    
  • 4、包含字段__icontains不区分大小写

  • 5、字段__in=[]的使用(只能是里面几个值)

    def test(request):
        result = StudentModal.objects.exclude(age__in=[18, 20]).values('name', 'age')
        print(type(result))
        print(result)
        return HttpResponse('ok')
    
  • 6、字段__range=[]的使用,表示一个范围,注意与in区别

    def test(request):
        result = StudentModal.objects.exclude(age__range=[20, 200]).values('name', 'age')
        print(type(result))
        print(result)
        return HttpResponse('ok')
    
  • 7、startswith以书面开头匹配

    def test(request):
        result = StudentModal.objects.filter(name__startswith='张').values('name', 'age')
        print(type(result))
        print(result)
        return HttpResponse('ok')
    
  • 8、istartswith忽视大小写的开头匹配

  • 9、endswith以什么结尾匹配
  • 10、iendswith忽视大小写以结尾匹配

results matching ""

    No results matching ""