django---orm 进阶查询

#一般查询即单表内查询
print(Author.objects.all())
print(Author.objects.order_by('first_name')[0])   #0个表示id=1

#关联查询  BookpublisherFK关系
obj=Book.objects.get(publisher__name__contains='吉林')  #只适合出版社包含一本书的查找
print(obj)   #返回的是该出版社相关的书的名字

#两个字段比较大小
objs=Book.objects.filter(count__lt=F('book_comment'))  #找到count<book_commentBook F()专门取函数的某列值操作,执行不经过python解释器,不经过本机内存,是生成 SQL语句的执行。
print(objs)

#复杂查询
objs=Book.objects.filter(Q(count__lt=F('book_comment'))|Q(publisher_date__gt='2018-05-08'))  #Q函数为对对象的复杂查询
print(objs)

#聚合查询
print(Book.objects.all().aggregate(Avg('book_comment'),Sum('book_comment'),Max('book_comment')))  #聚合  求均值 等

pub_obj=Publisher.objects.first()  #聚合
print(pub_obj)
print(pub_obj.book_set.select_related())

pub_objs=Publisher.objects.annotate(book_nums=Count('book'))  #分类聚合
for pub_obj in pub_objs:
    print(pub_obj.book_nums)


print(Book.objects.values_list('publisher_date').annotate(Count('publisher_date')))  #对表内字段的分类聚合
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值