我已经使用IDatasetForm here跟踪了Ckan示例自定义数据集和资源元数据字段,然后我添加了一些自定义数据字段。
然后,我想添加一些词典,并且我已经按照这些步骤进行了here,一切都在第一时间完成。
我花了一些时间,因为我意识到它似乎只创建了一次词汇表。
我添加了以下功能:
def create_country_codes():
user = tk.get_action('get_site_user')({'ignore_auth': True}, {})
context = {'user': user['name']}
try:
data = {'id': 'country_codes'}
tk.get_action('vocabulary_show')(context, data)
except tk.ObjectNotFound:
data = {'name': 'country_codes'}
vocab = tk.get_action('vocabulary_create')(context, data)
for tag in (u'uk', u'ie', u'de', u'fr', u'es'):
data = {'name': tag, 'vocabulary_id': vocab['id']}
tk.get_action('tag_create')(context, data)
第一次是一切都好,我按照我的预期得到了结果。然后我尝试在功能中添加更多国家/地区(标签),因为它似乎没有更新我已更改的内容而被卡住了:
...
for tag in (u'uk', u'ie', u'de', u'fr', u'es', u'aa', u'bb', u'cc', u'dd'):
data = {'name': tag, 'vocabulary_id': vocab['id']}
tk.get_action('tag_create')(context, data)
...
注意新标记:u&#39; aa&#39;,u&#39; bb&#39;,u&#39; cc&#39;,u&#39; dd&#39; < / p>
几次后,我尝试更改功能的名称,然后根据需要获取所有国家/地区的列表。我想第一次创建标签列表。
我不知道我是否做错了什么,但有人知道如何更新词汇表(不创建新功能)吗?
感谢。
答案 0 :(得分:1)
对不起是迟到的回复..我在寻找其他类似的东西时碰到了这个。无论如何,如果你的列表得到更新,那么你必须打电话
vocab = tk.get_action('vocabulary_update')(context, data)
,而不是 vocab = tk.get_action('vocabulary_create')(context, data)
,一旦检查了列表已更新
答案 1 :(得分:0)
好吧,我发现了以下有用的扩展,它提供了一种配置数据集的不同模式和自定义字段的方法:CKAN-scheming
希望在我的情况下对任何人都有帮助:))