我可以在CKAN资源上附加额外内容吗?我注意到ckan.model.Resource
有extras
属性,因此我尝试使用以下内容创建资源:
resource = {
"package_id": "my-package-id",
"url": "http://google.com",
"name": "Google",
"extras": [
{ "key": "myextra", "value": "my extra content" }
]
}
from ckan.plugins import toolkit
toolkit.get_action("resource_create")(faked_context, resource)
我跟随,逻辑函数最终运行package_update
,但失败了ValidationError: {u' junk': u'The input field __junk was not expected.'}
谢谢!
答案 0 :(得分:5)
您不必为资源附加项使用密钥“extras”,只需在资源字典中添加您想要的任意键值对作为顶级键,它们将转换为资源附加项。例如,我认为这应该有效:
resource = {
"package_id": "my-package-id",
"url": "http://google.com",
"name": "Google",
"myextra": "my extra content"
}
至少,我只是通过API尝试了它并且它有效,所以我认为它可以通过插件工具包工作,就像你正在做的那样。我想这个功能需要记录,可能在resource_create() docstring。
(注意:不适用于包,用于向包中添加自定义字段,请参阅CKAN附带的example_idatasetform extension。)