将附加内容附加到CKAN资源?

时间:2013-03-29 18:50:32

标签: ckan

我可以在CKAN资源上附加额外内容吗?我注意到ckan.model.Resourceextras属性,因此我尝试使用以下内容创建资源:

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.'}

谢谢!

1 个答案:

答案 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。)