Django的mode的分组查询和聚合查询和F查询和Q查询

1、聚合查询

 # 聚合函数aggregate,求指定字段的最大值,最小值,平均值,和的值,方法如下

    from django.db.models import Avg
    from django.db.models import Sum
    from django.db.models import Max
    from django.db.models import Min

    obj = models.book.objects.all().aggregate(Avg("Book_price"))
    print(obj)

    obj = models.book.objects.all().aggregate(Sum("Book_price"))
    print(obj)

    obj = models.book.objects.all().aggregate(Max("Book_price"))
    print(obj)

    obj = models.book.objects.all().aggregate(Min("Book_price"))
    print(obj)

  

2、分组查询

    # 分组查询
    # 首先把书籍通过作者进行分组,然后求每个作者的书的价格的平均值
    obj = models.book.objects.all().values("Book_Auther").annotate(Avg("Book_price"))
    print(obj)

  

3、F查询和Q查询

我们先提出一个问题,就是我们要把书这张表中的所有书的价格都加1000,该如何实现呢?我们可以用下面的方法实现

    id_list = models.book.objects.all().values_list("id")
    # obj = models.book.objects.all()
    for i in id_list:
        new_price = models.book.objects.filter(id=i[0])[0].Book_price + 1000
        models.book.objects.filter(id=i[0]).update(Book_price=new_price)

  

猜你喜欢

转载自www.cnblogs.com/bainianminguo/p/9080275.html