Page'对象没有属性'ordered'异常
我需要对我的 modelformset_factory 进行分页,但我遇到了这个异常:
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)
分页功能的代码:
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
现在在我的视图中:
print type(Brand.objects.filter(shop=request.user.shop))
print type(brands)
输出结果:
<class 'django.db.models.query.QuerySet'>
<class 'django.core.paginator.Page'>
我现在不知道该怎么做了。
1 个回答
2
这里的问题是,你在一个需要 QuerySet
的地方用了 brands
(这是一个 Page
对象)。
看起来分页和表单集合并不是为了配合使用而设计的。从源代码来看,brands.object_list
可能还是一个 QuerySet
。如果是这样的话,就在你之前使用 brands
的地方用这个。
这个回答 提供了一个比较绕的解决方案来让两者一起使用,但效率不高。(它会先去数据库获取所需的项目 ID,然后再构建一个新的 QueryList
,明确包含这些 ID。)