2013-07-11 29 views
4

我正在寻找一种方法来查找CKAN中资源的package_id。我通过resource_show行动访问资源:从CKAN的资源字典中访问package_id

resource_dict = toolkit.get_action("resource_show")(context, {"id": "my-resource"}) 

产生的字典没有告诉我的资源所属的包。它告诉我:

resource_dict.get("package_id", None) == None # <<< True 
resource_dict["resource_group_id"] = "some-uuid" 

我可以在我的数据库,一个resource_group确实有package_id属性看。但是,似乎没有resource_group_show操作。

有没有另一种方式让我从资源字典导航到其父包?

谢谢!

回答

0

你是对的,不幸的是,当你调用resource_show时,当前版本的CKAN(2.2.1)不包含package_id,并且没有resource_group_show调用。如果你正在写一个扩展,你可以通过执行直接数据库查询解决这个问题:

SELECT resource_group.package_id 
    FROM resource, resource_group 
WHERE resource.id='<resource_id>' AND 
     resource.resource_group_id=resource_group.id; 

如果你想使用的API,只有这样,才能发现它是从搜索得到的package_id自顶向下调用package_list,然后调用package_show,直到找到包含相关resource_id的包。

0

您必须使用​​方法。

1

在CKAN 2.3和更新,在package_id调用到resource_show API调用被返回。