2013-03-27 47 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

相關問題