ORM的单表操作(ORM的14种方法详解)

ORM的API:

  • <1> all(): 查询所有结果
  • <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象
  • <3> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。
  • <4> exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象
  • <5> order_by(*field): 对查询结果排序('-id')
  • <6> reverse(): 对查询结果反向排序
  • <8> count(): 返回数据库中匹配查询(QuerySet)的对象数量。
  • <9> first(): 返回第一条记录
  • <10> last(): 返回最后一条记录
  • <11> exists(): 如果QuerySet包含数据,就返回True,否则返回False
  • <12> values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列
  • <13> values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
  • <14> distinct(): 从返回结果中剔除重复纪录

下划线查询:

  • __exact: 精确等于,如SQL的like'开发'。 例:filter(job__exact='开发')
  • __iexact: 精确等于并忽略大小写。 例:filter(job__iexact='开发')
  • __contains: 模糊匹配,如SQL的like'%荣耀%'。 例:filter(job__contains='开发')
  • __icontains: 模糊匹配,忽略大小写。 例:filter(job__icontains='开发')
  • __gt: 大于。 例:filter(job__gt=5)
  • __gte: 大于等于。 例:filter(job__gte=5)
  • __lt: 小于。 例:filter(job__lt=5)
  • __lte: 小于等于。 例:filter(job__lte=5)
  • __in: 判断是否在列表内。 例:filter(job__in=[1,2,3])
  • __startswith:以。。。开头。 例:filter(job__startswith='开发')
  • __istartswith:以。。。开头并忽略大小写。 filter(job__istartswith='开发')
  • __endswith: 以。。。结尾。 filter(job__endswith='开发')
  • __iendswith: 以。。。结尾并忽略大小写。 filter(job__iendswith='开发')
  • __range: 在。。。范围内。 filter(job__range='开发')
  • __year: 日期字段的年份。 filter(job__year='2018')
  • __month: 日期字段的月份。 filter(job__month='12')
  • __day: 日期字段的天数。 例:filter(job__day=30)
  • __isnull: 判断是否为空。 例:filter(job__isnull=True/False)

删除:

   对象.delete()  # 删一条

  queryset对象.delete()  # 对象包含多条可以删除

更新:

  Book.objects.filter(title__startswith="py").update(price=120)

posted on 2023-02-26 21:16  与太阳肩并肩  阅读(72)  评论(0编辑  收藏  举报

导航