如何选择特定列表引用的所有项目:参考字段?

时间:2015-01-22 20:16:14

标签: python database web2py

我的简化数据库是

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了吗?不建议我使用第三个表,这是故意非规范化的。

1 个答案:

答案 0 :(得分:0)

在这种情况下,不要进行嵌套选择。相反,请执行单独的查询以获取ID列表:

item_ids = db.my_categories(slug=request.args[0]).items_
items = db(db.my_items.id.belongs(item_ids)).select()