# 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)#
来源:https://www.cnblogs.com/huangxuanya/p/11559695.html