Python ';第'页;对象没有属性';有序';例外情况
我需要为我的modelformset_工厂分页,但我遇到以下异常:Python ';第'页;对象没有属性';有序';例外情况,python,django,pagination,Python,Django,Pagination,我需要为我的modelformset_工厂分页,但我遇到以下异常: Django Version: 1.6.2 Exception Type: AttributeError Exception Value: 'Page' object has no attribute 'ordered' 我认为: BrandFormSet = modelformset_factory(Brand, form=BrandFormList, extra=0, **kw) paginator, brand
Django Version: 1.6.2
Exception Type: AttributeError
Exception Value:
'Page' object has no attribute 'ordered'
我认为:
BrandFormSet = modelformset_factory(Brand, form=BrandFormList, extra=0, **kw)
paginator, brands = paginate(request, Brand.objects.filter(shop=shop), 10)
print type(Brand.objects.filter(shop=request.user.shop))
print type(brands)
分页功能代码:
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
def paginate(request, object_list, per_page):
paginator = Paginator(object_list, per_page)
page = request.GET.get('page')
try:
objects = paginator.page(page)
except PageNotAnInteger:
objects = paginator.page(1)
except EmptyPage:
objects = paginator.page(paginator.num_pages)
return paginator, objects
现在我认为:
BrandFormSet = modelformset_factory(Brand, form=BrandFormList, extra=0, **kw)
paginator, brands = paginate(request, Brand.objects.filter(shop=shop), 10)
print type(Brand.objects.filter(shop=request.user.shop))
print type(brands)
产出:
<class 'django.db.models.query.QuerySet'>
<class 'django.core.paginator.Page'>
我不知道此时该怎么办。这里的问题是,您在使用
品牌
(一个页面
)的上下文中,需要查询集
似乎分页和表单集并不是为了协同工作而设计的。从源代码看,它看起来像是品牌。object\u list
可能仍然是QuerySet
。如果是这样,请在之前使用品牌的地方使用
提供了一个将两者结合使用的黑客解决方案,但效率很低。(它对数据库进行一次访问以获取所需的项目ID,然后构造一个新的QueryList
,其中明确包含这些ID。)使用brands.object\u list时,我遇到了一个新错误:异常值:一旦获取了一个切片,就无法对查询重新排序。@Adam:Hmm,这强化了我的感觉,即这两个功能并不是为了协同工作而设计的。我没有比我链接的答案更好的主意了,他只是从头开始创建了一个新的查询集。。。