Как обновить список data_relation в Python Eve

У меня есть модель «пользователи» и схема для нее, которая включает отношение «один ко многим» к пользователям:

'followers': {
    'type': 'list',
    'schema': {
            'type': 'objectid',
            'data_relation': {
                    'resource': 'users'
            }
    }
},

Я пытаюсь обновить список подписчиков. Я попытался отправить запрос PATCH на конечную точку /users/545c7dccb505970bbf0e5ad1 с ключом «подписчики» и списком идентификаторов объектов, но это не сработало. Также попытался отправить запрос PUT на /users/545c7dccb505970bbf0e5ad1/followers/, но безуспешно.

Итак, как мне добавить объект в этот список с помощью Python Eve REST API?

GET /users/545c7dccb505970bbf0e5ad1/
{
    "_updated": "Fri, 07 Nov 2014 08:07:40 GMT",
    "public_key": "test",
    "_etag": "256d6da738a0f39929d40d1c868e1f67661460be",
    "_links": {
        "self": {
            "href": "/users/545c7dccb505970bbf0e5ad1",
            "title": "User"
        },
        "parent": {
            "href": "",
            "title": "home"
        },
        "collection": {
            "href": "/users",
            "title": "users"
        }
    },
    "active": false,
    "_created": "Fri, 07 Nov 2014 08:07:40 GMT",
    "_id": "545c7dccb505970bbf0e5ad1"
}

PATCH /users/545c7dccb505970bbf0e5ad1
{
    "_status": "ERR",
    "_error": {
        "message": "You don't have the permission to access the requested resource. It is either read-protected or not readable by the server.",
        "code": 403
    }
}

PUT /users/545c7dccb505970bbf0e5ad1/followers
{
    "_status": "ERR",
    "_error": {
        "message": "The requested URL was not found on the server.  If you entered the URL manually please check your spelling and try again.",
        "code": 404
    }
}

person Stefan D    schedule 07.11.2014    source источник


Ответы (1)


doesn't work ужасно широк... однако, возможно, вам нужно отправить свой токен _etag, который сервер вернул при получении или создании пользователя... это необходимо для предотвращения обновления устаревшей модели

person Joran Beasley    schedule 07.11.2014
comment
Куда сервер возвращает токен _netid? Это какой-то заголовок? Я не вижу этого в JSON. - person Stefan D; 08.11.2014
comment
Спасибо, это сработало. Пришлось добавить в запрос заголовок If-Match и указать там значение _etag. - person Stefan D; 08.11.2014