gpt4 book ai didi

django - 切片时查询集被评估?

转载 作者:行者123 更新时间:2023-12-05 01:45:41 26 4
gpt4 key购买 nike

在 django queryset doc( https://docs.djangoproject.com/en/1.10/ref/models/querysets/ ) 中,它说“在内部,一个 QuerySet 可以被构造、过滤、切片,并且通常在没有实际命中数据库。在您执行某些操作来评估查询集之前,实际上不会发生任何数据库事件。”然后,它说“您可以通过以下方式评估 QuerySet:迭代/切片/...” .

所以,我的问题是“在切片时是否对 Queryset 求值”。

最佳答案

完整的段落解释了切片何时会评估查询集,何时不会(强调我的):

  • Slicing. As explained in Limiting QuerySets, a QuerySet can be sliced, using Python’s array-slicing syntax. Slicing an unevaluated QuerySet usually returns another unevaluated QuerySet, but Django will execute the database query if you use the “step” parameter of slice syntax, and will return a list. Slicing a QuerySet that has been evaluated also returns a list.

Django 只会在您使用 step 参数时评估查询集,例如 queryset[::2],因为这不能转换为 SQL 查询。在其他情况下,切片未评估的查询集将返回另一个未评估的查询集,Django 将向查询添加 LIMIT 和/或 OFFSET

关于django - 切片时查询集被评估?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40689886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com