使用item_lookup_field进行VERSIONING会创建KeyError

时间:2014-12-07 19:44:14

标签: eve

在我的应用程序中,我想对我的一些资源端点使用item_lookup_field设置。我也需要版本控制。

settings.py我有以下内容:

[...]
VERSIONING = True
ITEM_URL = 'regex("[a-z0-9]{0,24}")'
DOMAIN = {
    'people': {
        'item_lookup_field': 'lastname',
        'type': 'dict',
        'schema': {
            'firstname': { 'type': 'string' },
            'lastname': { 'type': 'string', 'required': True, 'unique': True },
        } 
    }
}

GET点上的/people/obama有效,但/people/obama?version=1会产生以下KeyError:

Traceback (most recent call last):
  File "/foobar/eve0.5_env/lib/python2.7/site-packages/Flask-0.10.1-py2.7.egg/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)

[...]

  File "/foobar/eve0.5_env/lib/python2.7/site-packages/Eve-0.5_dev-py2.7.egg/eve/methods/get.py", line 210, in getitem
resource, req, lookup, document, version)
  File "/foobar/eve0.5_env/lib/python2.7/site-packages/Eve-0.5_dev-py2.7.egg/eve/versioning.py", line 257, in get_old_document
    lookup[versioned_id_field()] = lookup[app.config['ID_FIELD']]
KeyError: '_id'

我是否需要更改配置?

这是一个错误吗?


PS:首先发帖,请告诉我你是否需要其他任何东西

2 个答案:

答案 0 :(得分:1)

我认为Document Versioning仅支持标准端点(ID_FIELD),而不支持item_lookup_filter。您可能想要打开一张关于它的故障单,因此Josh和其他从事版本控制工作的人可以看看是否可以添加对替代端点的支持。

答案 1 :(得分:1)

我没有足够的“声誉”来发表评论,所以这不是答案,而是评论尼古拉的回答:

同意,我认为我们从未实现过该功能。请在Github上打开一张票(并提交拉取请求?!)。