【草稿】QuerySet特性及高级使用技巧,如何减少数据库的访问,节省内存,提升网站性能

https://mp.weixin.qq.com/s?__biz=MjM5OTMyODA4Nw==&mid=2247483949&idx=1&sn=bc4c8929d5f8e99a769c63f2208ed6eb&chksm=a73c6215904beb033f3277e3d1a98aaeece313792649cf96eea77cb1ee3d06bb493d06bc0c99&scene=21#wechat_redirect

常用的预取操作,减少数据库访问

正向关联 select_related 关联单个对象
反向关联 prefetch_related 关联多个对象

from django.db.models import Prefetch
prefetch_content_items = Prefetch('patrol_content_items', queryset=PatrolContentItem.objects.order_by('id'))
queryset = queryset.select_related('classification').prefetch_related(prefetch_content_items)

1.需要filter拿到queryset对象,做多个结果的序列化,先filter后做related操作。
注意,拿到queryset之后,可以直接遍历,但不要串联其他filter操作了,若再filter相当于一个新的sql查询,预取就失效了
2.需要get拿到单个实例结果,先related后get操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值