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出现的缺陷。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值