我的简化数据库是
db.define_table('my_items',Field('name_'),
format = '%(name_)s'
)
db.define_table('my_categories',Field('name_'),
Field('slug'),
Field('items_', 'list:reference my_items'),
format = '%(name_)s'
)
控制器中的我尝试获取特定类别中的每个项目:
def test():
items = db(db.my_items.id.belongs(db(db.my_categories.slug == request.args[0])._select(db.my_categories.items_)[0])).select(db.my_items.ALL)
return dict(items=items)
即使数据库中存在分配了一些项目的类别,并且给出了正确的段塞,也不会返回任何内容。我错误地使用belongs
了吗?不建议我使用第三个表,这是故意非规范化的。
答案 0 :(得分:0)
在这种情况下,不要进行嵌套选择。相反,请执行单独的查询以获取ID列表:
item_ids = db.my_categories(slug=request.args[0]).items_
items = db(db.my_items.id.belongs(item_ids)).select()