我正在研究一個非常簡單的應用程序,作爲將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