4

我可以在 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.'}

谢谢!

4

1 回答 1

6

您不必为资源附加项使用键“附加”,只需在资源字典中添加任何您想要的任意键值对作为顶级键,它们将被转换为资源附加项。例如,我认为这应该有效:

resource = {
    "package_id": "my-package-id",
    "url": "http://google.com",
    "name": "Google",
    "myextra": "my extra content"
}

至少,我只是在 API 上尝试过它并且它工作,所以我认为它可以通过插件工具包工作,就像你正在做的那样。我猜这个功能需要记录,可能在resource_create() 文档字符串中。

(注意:这不适用于包,要向包添加自定义字段,请参阅CKAN 附带的example_idatasetform 扩展。)

于 2013-03-30T13:12:56.887 回答