Ввод списка мутаций графена Python

#python #graphene-python #graphql-python

Вопрос:

У меня есть мутация, которая выглядит так

 class ApisInteractiveGlobal(BaseMutation):
success = Boolean()
error = String()

class Arguments:
    user_id = List(ID)
    api_name = String()
    global_apis = Boolean()
    my_org_api = Boolean()

def mutate(self, info, user_id=[], api_name=None, global_apis=None, my_org_api=None):
    for id in user_id:
        user = User.objects.get(id=id)
        api = user.apis_interactive.get(name=api_name)
        if my_org_api is not None:
            api.my_orgapis = my_org_api
        if global_apis is not None:
            api.global_apis = global_apis
        api.save(update_fields=['global_apis', 'my_orgapis'])
    return ApisInteractiveGlobal(success=True)
 

Здесь я пытаюсь передать список пользователей за раз, чтобы обновить некоторые значения в моем коде. Но мутация приводит к ошибкам. Может ли кто-нибудь предложить ввод списка для мутации в качестве примера?

Комментарии:

1. Привет, не могли бы вы, пожалуйста, добавить ошибки, которые вызывает мутация? Спасибо

Ответ №1:

Передача любого из списка значений других типов проста, используя, например, аналогично списку(строке)

 class ApisInteractiveGlobal(BaseMutation):
success = Boolean()
error = String()

class Arguments:
    user_id = List(ID)
    apis = List(String)
    global_apis = Boolean()
    my_org_api = Boolean()

def mutate(self, info, user_id=[], apis=[], global_apis=None, my_org_api=None):
    for id in user_id:
        for api in apis:
            user = User.objects.get(id=id)
            api = user.apis_interactive.get(name=api)
            if my_org_api is not None:
                api.my_orgapis = my_org_api
            if global_apis is not None:
                api.global_apis = global_apis
            api.save(update_fields=['global_apis', 'my_orgapis'])
    return ApisInteractiveGlobal(success=True)
 

В приведенном выше коде для передачи списка идентификаторов пользователей и списка строк я использовал список(идентификатор) и список(строка). Это сработало