我通过django-pyodbc-azure 1.11.0.0使用Django 1.11,Django-tables2 1.19.0和MS SQL。
我正在显示一个用于相当慢视图的模型的表,遗憾的是,该表必须为每一行运行子查询。我无法更改视图,因此我已禁用tables2的paginator并完成切片以限制视图子查询将在其上运行的行数:
char i = front.getData();
我也禁用了列的排序。
然而,当使用django-admin-toolbar时,我可以看到" ... COUNT_BIG(*)FROM(SELECT TOP 25 ..."然而被发送到服务器
出于性能原因,我想尽可能防止COUNT_BIG,但过去几天我的各种错误尝试都遭遇了可怕的失败。
我非常感谢您对此提供任何帮助。感谢。
答案 0 :(得分:3)
这是a bug in django-tables2,应该使用commit 942f05e修复。
该修补程序以version 1.21.1发布。
答案 1 :(得分:-1)
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
class PaginateQueryset(object):
'''Paginate Queryset'''
def paginate_query_set(self, queryset, page_size):
''' Paginate '''
page = self.search_params.get('page', 1)
paginator = Paginator(queryset, page_size)
try:
objects = paginator.page(page)
except PageNotAnInteger:
objects = paginator.page(1)
except EmptyPage:
objects = paginator.page(paginator.num_pages)
return objects, paginator.count
def my_view(request):
queryset = my_model.objects.all()
result, count = PaginateQueryset.paginate_query_set(
queryset, 25)
return result, count