'Page'对象没有属性'ordered'异常
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了'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'>
我不知道此时该怎么做。
答案
这里的问题是你在期待brands
的环境中使用Page
(一个QuerySet
)。
似乎分页和表单集不是为了协同工作而设计的。从浏览源代码看,它看起来像brands.object_list
可能仍然是QuerySet
。如果是这样,请使用之前使用过brands
的地方。
This answer给出了将两者结合使用的hacky解决方案,但效率很低。 (它会一次访问数据库以获取所需的项ID,然后构造一个明确包含这些ID的新QueryList
。)
以上是关于'Page'对象没有属性'ordered'异常的主要内容,如果未能解决你的问题,请参考以下文章
AttributeError:'list'对象没有属性'isdigit'。有效地指定句子列表中每个单词的POS?
AttributeError:'str'对象没有属性'author'