1

我试图弄清楚如何以编程方式将自由格式(无词汇)标签添加到包中,我发现文档有点混乱。

来自http://docs.ckan.org/en/latest/ckan.logic.action.create.html package_create说我可以添加标签并“查看标签字典格式的 tag_create()”

tag_create说“要创建一个新的免费标签,只需将标签添加到包中,例如使用 package_update 功能”

来自http://docs.ckan.org/en/latest/ckan.logic.action.update.html package_update并没有真正指定如何使用它,所以我尝试了:

package_update({"id": "my-package-id", "tags": [ "some", "free", "tags"]})

然而,它抱怨它需要字典格式的标签,因为我会用它来指定作为词汇表一部分的标签。如何指定免费标签?

此外,一旦我输入标签,访问标签的最佳方式是什么?我遇到了my_package.package_tags包含标签但my_package.get_tags()返回空列表的情况?

非常感谢!!

4

1 回答 1

1

您可以简单地通过执行 package_create() 或 package_update() 并指定一个尚不存在的标签来创建一个新标签,我认为(猜测)“tags”参数的正确格式为 package_create() 或 package_update( ) 应该:

"tags": [{"name": "my_tag"}, {"name": "my-other-tag"}]

但是您必须对此进行测试。

然而,它抱怨它需要字典格式的标签,因为我会用它来指定作为词汇表一部分的标签。如何指定免费标签?

如上所述,字典格式与 vocab 标签相同,但只有“name”键,没有“vocabulary_id”。

此外,一旦我输入标签,访问标签的最佳方式是什么?我遇到了 my_package.package_tags 包含标签的情况,但 my_package.get_tags() 返回了一个空列表?

使用动作函数:package_show()、tag_list()、tag_show() 等。

如果您正在编写 CKAN 扩展并且您不想通过发出 HTTP 请求来调用 CKAN 的操作函数,那么您应该使用“插件工具包”与 CKAN 进行交互,其中包括一种调用操作函数的方法,如下所示:

import ckan.plugins.toolkit as tk
my_package = tk.get_action('package_show')({'id': 'my_package'})

您会在工具包中找到许多其他有用的东西。

于 2013-03-27T20:15:20.300 回答