CKAN - 自定义数据字段

CKAN - customizing data fields

我遵循了 Ckan 示例使用 IDatasetForm here 自定义数据集和资源元数据字段,我开始添加一些自定义数据字段。

然后,我想添加一些词典,并且我已按照这些步骤进行操作 here,一切都在第一时间运行。

我花了很少时间才意识到词汇表似乎只创建了一次。

  1. 我添加了以下功能:

    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)
    
  2. 第一次一切正常,结果如我所说。然后我尝试在函数中添加更多国家(标签),但我被卡住了,因为它似乎没有更新我所做的更改:

    ...
     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'

  3. 几次后,我尝试更改函数的名称,然后我得到了我想要的所有国家/地区的列表。我猜de list of tags是第一次创建的。

我不知道是不是我做错了什么,但有人知道如何更新词汇列表(不创建新函数)吗?

谢谢。

好吧,我发现了以下有用的扩展,它提供了一种配置不同数据集模式和自定义字段的方法:CKAN-scheming

希望对遇到我这种情况的人有所帮助:)

您好,抱歉回复晚了。我在寻找其他类似内容时遇到了这个问题。无论如何,如果您的列表得到更新,那么您必须致电 vocab = tk.get_action('vocabulary_update')(context, data) 而不是 vocab = tk.get_action('vocabulary_create')(context, data) 一旦您检查列表已更新