【问题标题】:Django paging object has issues with Postgresql QuerySetsDjango 分页对象与 Postgresql QuerySets 存在问题
【发布时间】:2011-06-19 16:00:35
【问题描述】:

我有一些在 SQLite 数据库或 MySQL 数据库上运行良好的 django 代码,但它遇到了 Postgres 问题,这让我抓狂,以前没有人遇到过这个问题。我认为这也可能与寻呼机评估查询集的方式有关。

在我的观点中:

def index(request, page=1):
    latest_posts = Post.objects.all().order_by('-pub_date')
    paginator = Paginator(latest_posts, 5)
    try:
        posts = paginator.page(page)
    except (EmptyPage, InvalidPage):
        posts = paginator.page(paginator.num_pages)
    return render_to_response('blog/index.html', {'posts' : posts})

在模板内部:

{% for post in posts.object_list %}
    {# some rendering jazz #}
{% endfor %}

这适用于 SQLite,但 Postgres 给了我:

Caught TypeError while rendering: 'NoneType' object is not callable

更复杂的是,当我将 Queryset 调用切换到:

latest_posts = Post.objects.all()

一切都很好。我尝试重新阅读文档,但什么也没找到,尽管我承认此时我有点沮丧。我错过了什么?

提前致谢。

【问题讨论】:

  • AFAIK,分页器只是将 LIMIT 和 OFFSET 添加到来自 QuerySet 对象的查询中。到目前为止,我从未遇到过 Paginator 和 PostgreSQL 的问题。尝试使用 QuerySet 在 shell 中循环分页器及其 object_lists,也许你会得到更准确的错误消息,或者你会看到它运行良好。
  • 你在某处使用defaultdict吗?
  • 我已经尝试在 shell 中运行所有的东西,它运行良好,这使得模板的困难更加令人沮丧。不知何故,模板无法从页面对象中获取对象列表。我想会更多地玩它。我不确定defaultdict 是什么,所以我认为我不会在任何地方使用它。

标签: python django postgresql django-queryset


【解决方案1】:

这对我来说是一个可怕的错误,没有责任归咎于 Postgresql - 这个问题出现在我的一个自定义模板标签处理 postgresql 数据库中的某些帖子的方式上,这些帖子在 SQLite 中不存在。我还在解决这个问题,但是这个问题是无效的。

【讨论】:

    猜你喜欢
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 2018-01-28
    • 2021-05-15
    • 2011-09-13
    相关资源
    最近更新 更多