如何将自由格式标签添加到CKAN包中?

时间:2013-03-27 19:48:14

标签: python tags action ckan

我正在试图弄清楚如何以编程方式将自由格式(无词汇表)标签添加到包中,而且我发现文档有点令人困惑。

来自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()返回空列表的情况?

非常感谢!!

1 个答案:

答案 0 :(得分:0)

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

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

但你必须测试它。

  

然而,抱怨它想要字典格式的标签,就像我一样   用于指定作为词汇表一部分的标签。我如何能   指定一个免费标签?

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

  

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

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

如果您正在编写CKAN分机并且您不想拨打CKAN 通过发出HTTP请求的动作函数,然后你应该与之交互 CKAN使用“插件工具包”,其中包括一种调用动作的方法 这样的功能:

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

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