django rom查询(单表)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_45615001/article/details/100747025

all()

  • 返回一个queryset一个列表
  • 返回符合条件的所有数据
    在这里插入图片描述
    在这里插入图片描述
    在models.py文件里设置要查询的字段,返回的是字符串,所以要把非字符串的进行转换

在这里插入图片描述

在这里插入图片描述

全部查询、指定查询、遍历
在这里插入图片描述
在这里插入图片描述
get方法

  • 返回一个对象
  • 返回结果有且只有一条,get后面的条件常用主键
    在这里插入图片描述filter 方法,类似于sql中的 where
    • 返回值: queryset
    • 使用遍历或者下标提取属性的值

因为在models。py中返回的是name,所有打印的是name在这里插入图片描述
first方法 和last 方法

first 返回一个对象,返回符合条件的第一条数据(对象)

first 返回一个对象,返回符合条件的最后一条数据(对象)

    data = Person.objects.filter(name="zhangsan").first()
    print (data.age)

    data = Person.objects.filter(name="zhangsan").last()
    print(data.age)

排序

    #升序
    # data = Person.objects.all().order_by('age')
    # print(data)
    #降序
    data = Person.objects.all().order_by('-age')
    print(data)
    return HttpResponse('查询数据')

exclude() :返回一个quertset,查询集,包含了跟给定条件不符合的所有数据

返回除张三以为其他人的年龄:
在这里插入图片描述
reverse : 对查询结果反向排序 逆序
这个方法通常放在有排序的查询集 后面使用

在这里插入图片描述

扫描二维码关注公众号,回复: 7651507 查看本文章

Queryset

查询集,不是python列表,也叫结果集,表示从数据库中获取的一个对象集合

使用如下的方法的时候返回:

  • all()
  • filter()
  • order_by()
  • exclude()
  • values 特殊的queryset
  • 切片

特性:

  • 惰性
    • 创建好查询集之后不会立即执行,在使用的时候才会进行数据的查询,
  • 缓存
    • 使用一个查询集,第一次使用进行查询,然后将数据进行缓存,之后再使用该查询集不会再次发起查询,而是将查询到的结果缓存了下来

使用如下方法返回对象

  • get

  • first()

  • last()

      # values   queryset [duixiang,duixiang,duixiang]
      # 返回的是一个queryset 内容不是实例对象,而是具体数据的字典
      data = Person.objects.filter(name="zhangsan").values()
      print (data)
      # count 返回的是符合当前条件的数据的条数
      data = Person.objects.filter(name="zhangsan").count()
      print (data)
      # exists 返回一个 True或者Flase  判断是否存在
      data = Person.objects.filter(name="libai").exists()
      print (data)
      #
      # 切片  
      data = Person.objects.order_by("id")[2:5]
      print (data)
    

双下划线查询:

   # __lt 小于
	data = Person.objects.filter(id__lt=3)
    print (data)
    # gt  大于
    data = Person.objects.filter(id__gt=3)
    print (data)
    # gte 大于等于
    data = Person.objects.filter(id__gte=3)
    print (data)
    # in 包含  select * from stu where id in (1,2,3,4);
    data = Person.objects.filter(id__in = [1,2,3])
    print (data)
    # exclude 不包含
    # range 范围
    data = Person.objects.filter(id__range = [1,5])
    print (data)
    #  startswith   像 like j%   endswith  像 %j
    data = Person.objects.filter(name__startswith="j")
    print (data)
    #  endswith
    #  __contains 包含  大小写敏感
    data = Person.objects.filter(name__contains="w")
    print (data)
    #   __icontains  包含,大小写不敏感
    data = Person.objects.filter(name__icontains="w")
    print(data)

猜你喜欢

转载自blog.csdn.net/weixin_45615001/article/details/100747025