2018-09-08-Python全栈开发day52-django-orm多表操作-PART2

1.聚合和分组

  

b=Book.objects.aggregate(Avg('price'))

对数据的价格进行汇总并且求平均值

#查ye出过书的总价
    b=Book.objects.filter(author__name='ye').aggregate(Sum('price'))

分组annotate

  

  查询每个作者出的所有书的平均值

  思路:将每个作者分为一组,然后对每组的书价格平均值

  

    b=Book.objects.all.values('author__name').annotate(Avg('price'))


annotate是进行分组


    b=Book.objects.all().values('pub__name').annotate(Min('price'))

查询出版社出过的书的最小价格

F查询和Q查询

完成与或非查询

Q查询

  给书籍价格加上10

  

    b=Book.objects.all().update(price=F('price')+10)
用F可以直接进行操作

  与或非查询

  

    b=Book.objects.filter(Q(name='python') | Q(name='php'))
或操作 中间加管道符
非操作加 ~
而且可以进行组合

A| ~b ===a或者非B

猜你喜欢

转载自www.cnblogs.com/hai125698/p/9611503.html
今日推荐