2013-03-27 88 views
0

我想弄清楚如何以编程方式向程序包添加自由格式(无词汇)标记,并且我发现文档有点令人困惑。如何将自由格式标签添加到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()返回了一个空列表?

非常感谢!

回答

0

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

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

但是你必须测试一下。

但是,这种抱怨说,它希望在字典格式的标签,因为我 将使用指定的词汇的一部分标签。我如何 指定一个免费的标签?

所以如上,一样的字典格式作为一个翻译标签,但与 只有“姓名”键,并没有“vocabulary_id”。

此外,什么是访问的标签,一旦我有他们 进入的最佳方式?我遇到了my_package.package_tags 包含标签但my_package.get_tags()返回空列表的情况?如果你正在写一个CKAN扩展package_show(),tag_list(),tag_show()等

,你不想通过调用CKAN的 操作功能:

使用操作功能HTTP请求,那么你应该 CKAN使用“插件工具包”,其中包括一个方法来调用行动这样 功能进行交互:

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

你会发现很多其他有用的东西的工具包。

+0

因此,实际上,'my_package = tk.get_action(“package_show”)({“id”:“package-id”})'不起作用,因为该操作需要传递“context”。如果您不想通过发出HTTP请求来发布所有这些命令,这似乎是使用工具包时的一个长期问题。 – 2013-03-29 17:27:05

+0

传递上下文作为'None'似乎工作正常。即'tk.get_action(“package_show”)(None,{“id”:“package-id”})' – 2013-06-20 15:29:40

相关问题