当前位置:   article > 正文

Django —— 模型层 —— QuerySet —— QuerySet方法参考_django 模型外键 queryset

django 模型外键 queryset

prefetch_related()

prefetch_related(*lookups)

返回一个QuerySet,该QuerySet将在单个批处理中为每个指定的查找自动检索相关对象。

这与select_related的目的类似,因为这两种方法都是为了阻止由于访问相关对象而导致的大量数据库查询,但策略完全不同。

select_related的工作原理是创建一个SQL连接并在select语句中包含相关对象的字段。因此,select_related将获取同一数据库查询中的相关对象。但是,为了避免由于跨“多”关系连接而导致的结果集更大,select_related仅限于单值关系、外键关系和一对一关系。

prefetch_related对每个关系进行单独的查找,并在Python中执行“joining”。这使得它可以预取多对多和多对一对象,除了select_related支持的外键和一对一关系之外,还可以预取多对多和多对一对象。它还支持GenericRelationGenericForeignKey的预取,但是,它必须限制为一组相同的结果。例如,只有当查询限制为一个ContentType时,才支持预取GenericForeignKey引用的对象。

例如,假设您有以下模型:

    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/629624
    推荐阅读
    相关标签
      

    闽ICP备14008679号