【发布时间】: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