`
fangzhouxing
  • 浏览: 211585 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Django 1.0数据库分页查询时遇到的程序缺陷

阅读更多

     使用 Paginator 进行数据库分页查询时,如果有 extra(where=sql) 限制查询范围,同时用 .values() 限定输出字段,就会出现类似下面的错误:

 

 

  no such column id:
 

检查后台生成的SQL, 可以看到下面这样奇怪的SQL语句:

 

SELECT COUNT(*) FROM
 (SELECT "t_MenuItem"."id", "t_MenuItem"."name", "t_MenuItem"."descrip" 
    FROM "t_MenuItem" 
      WHERE ("t_MenuItem"."name" LIKE %% ESCAPE '\'  OR 
                   "t_MenuItem"."descrip" LIKE %% ESCAPE '\' ) AND 
            id NOT IN (SELECT item_id FROM t_GroupPermissions 
                              WHERE group_id = 2)) A1 WHERE id NOT IN
         (SELECT item_id FROM t_GroupPermissions WHERE group_id = 2)

<class 'sqlite3.OperationalError'>
no such column: id
 

注意就是这一句造成了no such column 错误:

 

A1 WHERE id NOT IN
 (SELECT item_id FROM t_GroupPermissions WHERE group_id = 2)

 

同样的程序在Django 0.97SVN运行一直正常,可以判定这是Django 1.0出现的缺陷。

 

分享到:
评论
1 楼 pzwsquare 2008-10-09  
只能是说Paginator不兼容1.0

相关推荐

Global site tag (gtag.js) - Google Analytics