Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django分页-重定向到对象所在的页面_Django - Fatal编程技术网

Django分页-重定向到对象所在的页面

Django分页-重定向到对象所在的页面,django,Django,我正在开发一个图像公文包应用程序,我有一个如下url: url(r'^(?P<slug_val>[-\w]+)/(?P<page>[0-9]+)/(?P<id>[0-9]+)/$', 'portfolio.views.imagedetail') 我无法解决的是如何使用Django的内置分页来计算图像在哪个页面上。以下是到目前为止我得到的信息: def imagedetail(request, slug_val, page, id): p = get_

我正在开发一个图像公文包应用程序,我有一个如下url:

url(r'^(?P<slug_val>[-\w]+)/(?P<page>[0-9]+)/(?P<id>[0-9]+)/$', 'portfolio.views.imagedetail')
我无法解决的是如何使用Django的内置分页来计算图像在哪个页面上。以下是到目前为止我得到的信息:

def imagedetail(request, slug_val, page, id):
    p = get_object_or_404(MyPortfolio, slug=slug_val)

    paginator = Paginator(p.images.all(), 25)

    # find out which page the image with id is on, if it's not page,
    # then redirect, otherwise render
我知道我可以遍历每个页面,但这似乎会不必要地影响数据库,我相信一定有更优雅的方法来完成

谢谢


Dom

如果要考虑数据库更改,除了查询数据库或。。。如果只使用一台web服务器,则必须将更改缓存在内存中的某个位置。只有当您没有太多的数据或足够的可用内存时,才可以选择后者

最优雅的查询方式如下,但在Django 1.0中,如果不使用SQL,很难实现这一点:

SELECT COUNT(*) + 1 FROM images WHERE images.field < currentfield 
从images.field
(其中field是用于排序图像的字段字段)

要在Django中使用原始SQL,您可以阅读以了解更多信息


然后您就知道了图像的位置,并且可以轻松地计算项目所在的页面。

Django的开发版本和1.1 beta版支持ORM代码中的聚合查询,因此您不需要返回原始SQL。
SELECT COUNT(*) + 1 FROM images WHERE images.field < currentfield