我正在研究一个非常简单的应用程序,作为将MongoDB与web2py集成的用例。在应用程序的一个部分,我感兴趣的是返回一个产品列表:MongoDB&web2py:使用ObjectIds
我的数据库表:
db.define_table('products',
Field('brand', label='Brand'),
Field('photo', label='Photo'),
...
Field('options', label='Options'))
我的控制器:
def products():
qset = db(db['products'])
grid = qset.select()
return dict(grid=grid)
我的观点:
{{extend 'layout.html'}}
<h2>Product List</h2>
{{=grid}}
产品退还没有问题。但是,products._id字段以“26086541625969213357181461154”的形式返回值。如果我切换到shell(或python)并尝试根据这些_ids查询我的数据库,我找不到任何产品。
正如您所料,数据库中的_ids是ObjectIds,它看起来像是'544a481b2ceb7c3093a173a2'。我想我的观点返回ObjectIds而不是长字符串。很简单,但我遇到了麻烦。
嗯,不知道为什么'db._adapter.object_id'不为你工作,但在任何情况下,它只是在最后也做'十六进制(ARG)[2: ] .rstrip('L').zfill(24)',因此大部分与您的代码相同。 – Anthony 2014-11-03 00:37:48