Как извлечь данные из списка диктов, используя метод мутации графена?

Я пытаюсь создать список объектов, используя graphql mutation, но были неудачными. Я обнаружил ошибку, пожалуйста, посмотрите фрагменты кода и прокомментируйте, где распространяется ошибка.

Примечание: я использую графен на Flask с Python 2.7

Вот пример полезной нагрузки:

mutation UserMutation {
    createUser(
        phones: [
            {
                “number”: “609-777-7777”,
                “label”: “home"   
            },
            {
                “number”: “609-777-7778”,
                “label”: “mobile"   
            }
        ]
    )
}

На схеме у меня есть следующее:

class CreateUser(graphene.Mutation):
    ok = graphene.Boolean()
    ...
    phones = graphene.List(graphene.String())  # this is a list of string but what I need is a list of dicts!

1 ответ

Решение

Для того чтобы иметь dict в качестве входа, вы должны использовать InputObjectType, (InputObjectTypes похожи на ObjectTypes, но только для входных данных).

Этот пример должен работать с графеном 1.0,

class PhoneInput(graphene.InputObjectType):
    number = graphene.String()
    label = graphene.String()

class CreateUser(graphene.Mutation):
    class Input:
        phones = graphene.List(PhoneInput)
    ok = graphene.Boolean()

class Mutation(graphene.ObjectType):
    create_user = CreateUser.Field()
Другие вопросы по тегам