欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Django 聚合查询

发布时间:2024/1/23 28 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Django 聚合查询 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

聚合查询是做数据分析的数据库基础。通常使用聚合函数完成聚合查询:
Mysql聚类函数
Count 计数
Sum 求和
Avg 求平均数
Max最大
Min最小
django也有相似的操作,通常django和聚类查询和order_by,group_by
在django当中排序查询是order_by
分组查询是annotate,分组查询通常写在查询的尾部。
Django聚类查询的例子

Django使用聚类方法,需要通过aggregate方法

def cart(request):#购物车页面user_id=request.COOKIES.get("user_id")goods_list=Cart.objects.filter(user_id=user_id).order_by("-id")if request.method=="POST":#cart页提交订单post_data=request.POSTcart_data=[]#收集前端传递过来的商品cart_ids=[]for k,v in post_data.items():if k.startswith("goods_"):#判断传过来的订单idprint(v,"v",k,"k")cart_data.append(Cart.objects.get(id=int(v)))cart_ids.append(int(v))goods_count=sum([int(i.goods_number) for i in cart_data])#提交过来的数据总的数量#goods_total=sum([int(i.goods_total) for i in cart_data])#订单的总价**goods_total=Cart.objects.filter(id__in=cart_ids).aggregate(Sum("goods_total"))#得到一个字典**goods_total=goods_total["goods_total__sum"]#goods_store=([str(i.goods_store) for i in cart_data])#保存订单order=Order()order.order_id=setOrderId(str(user_id),str(goods_count),"2")#订单中有多个商品或者多个店铺,使用goods_count来代替商品id,使用2代表店铺idorder.goods_count=goods_countorder.order_user=Buyer.objects.get(id=user_id)order.order_price=goods_totalorder.order_status=1order.save()#保存订单详情#这里的detail是购物车里的数据实例,不是商品的实例for detail in cart_data:order_detail=OrderDetail()order_detail.order_id=order#order是一条订单数据order_detail.goods_id = detail.goods_idorder_detail.goods_name = detail.goods_nameorder_detail.goods_price = detail.goods_priceorder_detail.goods_number = detail.goods_numberorder_detail.goods_total = detail.goods_totalorder_detail.goods_store = detail.goods_storeorder_detail.goods_image = detail.goods_pictureorder_detail.save()url="/buyer/place_order/?order_id=%s"%order.idreturn HttpResponseRedirect(url)return render(request,"buyer/cart.html",locals())

总结

以上是生活随笔为你收集整理的Django 聚合查询的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。