Что именно является атрибутом в функции marshmallow.fields.Nested ()? - PullRequest
2 голосов
/ 06 апреля 2020

Я пытаюсь вложить схему в другую схему, как показано ниже:

class RecipePaginationSchema(PaginationSchema):
    data = fields.Nested(RecipeSchema, attribute = "items", many = True)

Результат должен выглядеть примерно так:

{
    "links": {
        "first": "http://localhost:5000/users/name/recipes?per_page=2&visibility=all&page=1",
        "last": "http://localhost:5000/users/name/recipes?per_page=2&visibility=all&page=2",
        "next": "http://localhost:5000/users/name/recipes?per_page=2&visibility=all&page=2"
    },
    "page": 1,
    "pages": 2,
    "per_page": 2,
    "total": 3,
    "data": [
        {
            "id": 11,
            ...
        }
}

Однако, когда я пытался использовать другой атрибут вместо "items", я не получил часть "data" в ответе JSON. Итак, что именно означает этот атрибут?

Кстати, я слежу за книгой Packt Python Основы разработки API.

1 Ответ

0 голосов
/ 06 апреля 2020

Из документации :

атрибут - Имя атрибута, из которого будет получено значение при сериализации. Если Нет, предполагается, что атрибут имеет то же имя, что и поле. Примечание. Это следует использовать только для очень конкретных c вариантов использования, таких как вывод нескольких полей для одного атрибута. В большинстве случаев вместо этого следует использовать data_key.

Другими словами, вы сопоставляете свое поле 'data' в RecipePaginationSchema с атрибутом 'items' в RecipeSchema.

I не знаю ваш вариант использования, но, как объясняется в документации, вы должны использовать ключевое слово атрибута в качестве крайней меры. Многие варианты использования могут быть решены с помощью ключевых слов «only» и «exclude» (см. здесь ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...