select_related与prefetch_related

余生长醉 提交于 2019-12-01 08:36:25
    # select_related与prefetch_related
#        # select_related帮你直接连表操作 查询数据   括号内只能放外键字段
#        # res = models.Book.objects.all().select_related('publish')
#        # for r in res:
#        #     print(r.publish.name)
#        # res = models.Book.objects.all().select_related('publish__xxx__yyy__ttt')
#        # print(res)
#        # res = models.Book.objects.all()
#        """
#        select_related:会将括号内外键字段所关联的那张表  直接全部拿过来(可以一次性拿多张表)跟当前表拼接操作
#        从而降低你跨表查询 数据库的压力
#        
#        注意select_related括号只能放外键字段(一对一和一对多)
#         res = models.Book.objects.all().select_related('外键字段1__外键字段2__外键字段3__外键字段4')
#        """
#        # prefetch_related  不主动连表
#        res = models.Book.objects.prefetch_related('publish')
#        """
#        不主动连表操作(但是内部给你的感觉像是连表操作了)  而是将book表中的publish全部拿出来  在取publish表中将id对应的所有的数据取出
#        res = models.Book.objects.prefetch_related('publish')
#        括号内有几个外键字段 就会走几次数据库查询操作    
#        """
#        for r in res:
#           print(r.publish.name)

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!