我如何 select 特定 list:reference 字段引用的所有项目?
How can I select all items referenced by a specific list:reference field?
我的简化数据库是
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)
这个 returns 即使数据库中有类别并分配了一些项目,并且给出了正确的 slug,也什么都没有。我使用 belongs
不正确吗?不要建议我使用第三个 table,这是故意非规范化的。
在这种情况下,不要进行嵌套 select。相反,做一个单独的查询来获取 id 的列表:
item_ids = db.my_categories(slug=request.args[0]).items_
items = db(db.my_items.id.belongs(item_ids)).select()
我的简化数据库是
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)
这个 returns 即使数据库中有类别并分配了一些项目,并且给出了正确的 slug,也什么都没有。我使用 belongs
不正确吗?不要建议我使用第三个 table,这是故意非规范化的。
在这种情况下,不要进行嵌套 select。相反,做一个单独的查询来获取 id 的列表:
item_ids = db.my_categories(slug=request.args[0]).items_
items = db(db.my_items.id.belongs(item_ids)).select()