Django Queryset slice 对数据库进行多次查询
Django Queryset slice makes many queries to the database
有查看码:
posts = category.category_posts.filter(
~Q(pk=id),
date_published__lte=timezone.now(),
is_active=True).order_by('-date_published')[:19]
right_now = posts[:5]
actual = posts[5:10]
old_1 = posts[10:12]
old_2 = posts[12:14]
old_3 = posts[14:19]
在模板中呈现时,Django 会针对每个切片对数据库执行查询。只是 5. 查询集是惰性的。至于减少到一个查询?
首先通过将查询集转换为列表来评估查询集,然后再对其进行切片。
posts = list(posts)
right_now = ...
有查看码:
posts = category.category_posts.filter(
~Q(pk=id),
date_published__lte=timezone.now(),
is_active=True).order_by('-date_published')[:19]
right_now = posts[:5]
actual = posts[5:10]
old_1 = posts[10:12]
old_2 = posts[12:14]
old_3 = posts[14:19]
在模板中呈现时,Django 会针对每个切片对数据库执行查询。只是 5. 查询集是惰性的。至于减少到一个查询?
首先通过将查询集转换为列表来评估查询集,然后再对其进行切片。
posts = list(posts)
right_now = ...