我需要对 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'>
我现在不知道该怎么做。
最佳答案
这里的问题是您在需要 QuerySet
的上下文中使用 brands
(Page
)。
分页和表单集的设计似乎并不是为了协同工作。从源代码来看,brands.object_list
可能仍然是一个 QuerySet
。如果是这样,请在您之前使用brands
的地方使用它。
This answer提供了一个将两者一起使用的解决方案,但效率相当低。 (它会访问数据库一次以获取所需的项目 ID,然后构造一个显式包含这些 ID 的新 QueryList
。)
关于python - “页面”对象没有属性 'ordered' 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22426502/