python - “页面”对象没有属性 'ordered' 异常

标签 python django pagination

我需要对 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/

相关文章:

Python Tkinter - 保存 Canvas - tkinter 崩溃

python - 返回登录用户申请的所有职位的查询集

python - 我如何在 Django 中获取多对多关系表数据?

gwt - 如何将小部件添加为单元格表 GWT 中的单元格

php - Laravel - 末尾可能包含分页/查询 url 的路由 - 分页 url 不会添加到查询 url,而是会替换它

python - 使用 openpyxl 时出现 "Bad magic number for file header"错误

python - 比较运算符对字典有什么作用?

python - Odoo 10 : Cant call my python function from menu item

python - 使用 django-tastypie 创建、更新和删除调用

php - Doctrine2 与 MS Server 分页和排序在 ZF2 下不工作