我遵循了 Ckan 示例使用 IDatasetForm here 自定义数据集和资源元数据字段|然后我开始添加一些自定义数据字段。
然后,我想添加一些词典,我已经按照这些步骤操作了 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'aa'、u'bb'、u'cc'、u'dd'
几次后,我尝试更改函数的名称,然后我得到了我想要的所有国家/地区的列表。我猜de list of tags是第一次创建的。
我不知道是不是我做错了什么,但是有人知道如何更新词汇列表(不创建新函数)吗?
谢谢。
嗨,抱歉,回复晚了。我在寻找其他类似内容时遇到了这个问题。无论如何,如果您的列表得到更新,那么您必须调用 vocab = tk.get_action('vocabulary_update')(上下文, 数据)
代替 vocab = tk.get_action('vocabulary_create')(context, data)
检查列表是否已更新
我是一名优秀的程序员,十分优秀!